2016-05-16 19 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

あなたは配列にマイカルを作る場合は、マイカルに基づいて、その配列や変数の代入スルーステップ第二のループが必要になりますがそのループにする必要があります。あなたがすでに持っているイベントループもそのループの中にいる必要があります。各カレンダーのイベント数が異なる可能性があるため、行カウンタを維持する最も良い方法は、両方のループの前に宣言し、行に書き込んだ後に増分することです。

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. 

    } 

    } 
} 
関連する問題