无法使用Google应用程序脚本将数据从Google日历提取到电子表格

问题描述:

我正在尝试将数据从Google日历提取到电子表格。无法使用Google应用程序脚本将数据从Google日历提取到电子表格

似乎没有语法错误,程序说提取完成。但是我只收到“完成”消息,并且在电子表格中看不到任何结果。

日历有多个事件,所以它不是日历问题。

有人能帮我弄清楚发生了什么事吗?谢谢。

function getRoom2MonthEvent() 
{ 
    var endDate = new Date(); 
    var myCals = CalendarApp.getCalendarById('[email protected]'); 
    var myRow = 2 
    var mySheet = SpreadsheetApp.getActiveSheet(); 
    var startDate = new Date(); 


    startDate.setHours(0); 
    startDate.setMinutes(0); 
    startDate.setSeconds(0); 
    startDate.setDate(0); 

    endDate.setHours(0); 
    endDate.setMinutes(0); 
    endDate.setSeconds(0); 
    endDate.setMonth(endDate.getMonth() + 1); 
    endDate.setDate(1); 

    for (i in myCals) 
    { 
     var myCals = myCals[ i ]; 
     var myEvents = myCal.getEvents(startDate, endDate); 


     mySheet.getRange(myRow, 1).setValue(myCal.getName()); 

     if (myEvents.length > 0) 
     { 
      for (j = 0; 
        i < myEvents.length; 
        i++) 
      { 
       var myEvent = myEvents[ i ]; 


       mySheet.getRange(myRow, 2).setValue(myEvent.getTitle()); 
       mySheet.getRange(myRow, 3).setValue(myEvent.getStartTime()); 
       mySheet.getRange(myRow, 4).setValue(myEvent.getEndTime()); 
       myRow++; 
      } 
     } 
    } 

    Browser.msgBox("Done"); 
} 
+1

'getCalendarById'返回一个日历对象,所以'for(myCals)'中没有任何东西可以迭代。 –

+0

如果有任何它遍历日历的属性键。 myEvents将会被定义并且脚本终止。 –

由于乔希·道森mentionned它的CalendarApp.getCalendarById()方法,你的迭代为没有意义的,除非你从多个日历数据。

您可以使用CalendarApp.getDefaultCalendar()CalendarApp.getCalendarByName()方法来获取所需的确切日历。
否则,如果你想操纵多个日历,你可以使用CalendarApp.getAllCalendars()方法。在这种情况下,您必须是所有者或订阅您要操作的日历。提示:为避免您需要确认何时使用Browser.msgBox()方法,您可以使用Spreadsheet.toast()方法,该方法会在窗口的右下方弹出一条消息。