2016-05-16 41 views
0

我正在使用Google腳本從資源日曆中提取數據。該腳本按預期提取單個日曆,但我想將多個資源日曆提取到1個工作表中。有人能指引我朝着正確的方向嗎?我已經着眼於創建一個包含多個日曆到'mycal'的數組,但是我無法運行它。由於將多個Google日曆提取到單個Google工作表

function export_gcal_to_gsheet(){ 

var mycal = "[email protected]"; 
var cal = CalendarApp.getCalendarById(mycal); 

var today = new Date(); 
var events = CalendarApp.getCalendarById(mycal).getEventsForDay(today); 

var sheet = SpreadsheetApp.getActiveSheet(); 

sheet.clearContents(); 

var header = [["Calendar Address", "Event Title", "Event Description", "Event Location", "Event Start", "Event End", "Calculated Duration", "Visibility", "Date Created", "Last Updated", "MyStatus", "Created By", "All Day Event", "Recurring Event"]] 
var range = sheet.getRange(1,1,1,14); 
range.setValues(header); 

for (var i=0;i<events.length;i++) { 
var row=i+2; 
var myformula_placeholder = ''; 
var details=[[mycal,events[i].getTitle(), events[i].getDescription(), events[i].getLocation(), events[i].getStartTime(), events[i].getEndTime(), myformula_placeholder, ('' + events[i].getVisibility()), events[i].getDateCreated(), events[i].getLastUpdated(), events[i].getMyStatus(), events[i].getCreators(), events[i].isAllDayEvent(), events[i].isRecurringEvent()]]; 
var range=sheet.getRange(row,1,1,14); 
range.setValues(details); 

var cell=sheet.getRange(row,7); 
cell.setFormula('=(HOUR(F' +row+ ')+(MINUTE(F' +row+ ')/60))-(HOUR(E' +row+ ')+(MINUTE(E' +row+ ')/60))'); 
cell.setNumberFormat('.00'); 

} 
} 

回答

0

如果您MYCAL到一個數組,你將需要第二個循環步驟通是陣列和基於MYCAL將需要在循環變量賦值。你已經擁有的事件循環也需要在循環中。由於每個日曆中的事件數量可能不同,因此維護行計數器的最佳方式是在兩個循環之前聲明它,並在寫入一行之後對其進行增加。

function export_gcal_to_gsheet(){ 


    var mycal = ["[email protected]", 
      "calenderaddress2", 
      "calenderaddress3", 
      "calenderaddress4"];//note , between address, no , after last 




    //here we do all the things that need to be done only once. 

    var today = new Date(); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    sheet.clearContents(); 

    var header = [["Calendar Address", "Event Title", "Event Description", "Event Location", "Event Start", "Event End", "Calculated Duration", "Visibility", "Date Created", "Last Updated", "MyStatus", "Created By", "All Day Event", "Recurring Event"]] 
    var range = sheet.getRange(1,1,1,14); 
    range.setValues(header); 


    var row=2;// this needs to be outside the loops in order to use it as a counter in nested loops 


    for (var j = 0; j< mycal.lengh; j++){ 
    //here we do the things we do once per calander 

    var events = CalendarApp.getCalendarById(mycal[j]).getEventsForDay(today);//refer to the calender in mycal based on loop counter 
    var cal = CalendarApp.getCalendarById(mycal[j]);//refer to the calender in mycal based on loop counter 
    //incerting a header for each calander would be done here. make sure to increment row 

    for (var i=0;i<events.length;i++) { 

     var myformula_placeholder = ''; 
     var details=[[mycal,events[i].getTitle(), events[i].getDescription(), events[i].getLocation(), events[i].getStartTime(), events[i].getEndTime(), myformula_placeholder, ('' + events[i].getVisibility()), events[i].getDateCreated(), events[i].getLastUpdated(), events[i].getMyStatus(), events[i].getCreators(), events[i].isAllDayEvent(), events[i].isRecurringEvent()]]; 
     var range=sheet.getRange(row,1,1,14); 
     range.setValues(details); 

     var cell=sheet.getRange(row,7); 
     cell.setFormula('=(HOUR(F' +row+ ')+(MINUTE(F' +row+ ')/60))-(HOUR(E' +row+ ')+(MINUTE(E' +row+ ')/60))'); 
     cell.setNumberFormat('.00'); 

     row++; //increment row counter. 

    } 

    } 
} 
相關問題