Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 在对象日历中找不到函数createEvent(或createAllDayEvent)。(谷歌电子表格应用程序)_Google Apps Script - Fatal编程技术网

Google apps script 在对象日历中找不到函数createEvent(或createAllDayEvent)。(谷歌电子表格应用程序)

Google apps script 在对象日历中找不到函数createEvent(或createAllDayEvent)。(谷歌电子表格应用程序),google-apps-script,Google Apps Script,好的,这是导致错误的代码。这似乎正是我试图添加全天活动的地方。我原以为这是一个日期格式问题,但我在下面注释掉的那一行是为了测试这一点而创建的,它导致了相同的错误。所以我被难住了。需要更改什么来纠正错误,或者错误的实际含义是什么 function cal1() { var sheet = SpreadsheetApp.getActiveSheet(); var startRow = 2; // First row of data to process

好的,这是导致错误的代码。这似乎正是我试图添加全天活动的地方。我原以为这是一个日期格式问题,但我在下面注释掉的那一行是为了测试这一点而创建的,它导致了相同的错误。所以我被难住了。需要更改什么来纠正错误,或者错误的实际含义是什么

    function cal1() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var startRow = 2;  // First row of data to process
      var numRows = 300;   // Number of rows to process
      var dataRange = sheet.getRange(startRow, 1, numRows, 26); //What data will be used
      var data = dataRange.getValues();
      var cal = CalendarApp.getCalendarsByName("Production Schedule"); //Gets the correct calendar
    for (i in data) {
      var row = data[i];
      var title = row[4];  // Column with Title
      var desc = row[3];       // Column with Description
      var date = row[8];   //Column with Date
      var loc = row[5];    //Column with Location
      cal.createAllDayEvent(title, date, {description:desc,location:loc});
      //cal.createEvent("Test", new Date("3/10/2010 14:30:00"), new Date("3/10/2010 14:30:00"));  
  }
 }
这将为您提供一个具有该名称的日历数组(因为日历可以共享名称,因此可以有多个名称)。试试这个:

  var cal = CalendarApp.getCalendarsByName("Production Schedule")[0]; //Gets the correct calendar

这将为您提供第一个(可能只有一个)具有该名称的日历。

如果您不确定“日期”变量是否确实是您可以使用的日期

  cal.createAllDayEvent(title, new Date(date), {description:desc,location:loc});
也就是说,使用记录器进行检查非常容易

Logger.log(date)

应以以下格式返回日期值:
2012年9月18日星期二03:00:00 PDT

我对
getCalendarsByName
有同样的问题。 相反,我使用了
getCalendarById
,并且很好地解决了这个问题。我认为日历名称可能会引起一些混乱,还有bug

您可以在日历设置中找到您的日历id,例如:
123xyz@group.calendar.google.com

脚本如下所示:

var cal = CalendarApp.getCalendarById("123xyz@group.calendar.google.com");

好吧,你说的做了,这很有道理,但现在它发现了这个错误。找不到方法createAllDayEvent(字符串、字符串、对象)。第二个参数应该是createAllDayEvent中的日期?它被设置为日期,我是否需要将电子表格列中的格式调整为不同的日期格式?查看您发布的错误消息;它说它找不到createAllDayEvent(string,string,object),所以您将向它传递一个字符串作为第二个参数。它必须是日期对象,而不是描述日期的字符串。你100%确定它是日期对象吗?好的,它运行时不会返回此解决方案的错误,但它只创建一个事件,并且不会添加标题、描述或位置。请看Corey的回答,没有错误。。。只是需要了解返回的对象是什么。
var cal = CalendarApp.getCalendarById("123xyz@group.calendar.google.com");