Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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
Javascript 谷歌应用程序脚本尚未完成_Javascript_Google Apps Script - Fatal编程技术网

Javascript 谷歌应用程序脚本尚未完成

Javascript 谷歌应用程序脚本尚未完成,javascript,google-apps-script,Javascript,Google Apps Script,我目前正在尝试制作一个脚本,通过我的谷歌电子表格,用电子表格中的信息更新谷歌日历 我根据找到的答案编写代码 代码如下: /** * Export events from spreadsheet to calendar */ function exportEvents() { var sheet = SpreadsheetApp.getActiveSheet(); var headerRows = 1; // Number of rows of header info (to ski

我目前正在尝试制作一个脚本,通过我的谷歌电子表格,用电子表格中的信息更新谷歌日历

我根据找到的答案编写代码

代码如下:

/**
 * Export events from spreadsheet to calendar
 */
function exportEvents() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var headerRows = 1;  // Number of rows of header info (to skip)
  var range = sheet.getDataRange();
  var data = range.getValues();
  var calId = "<ID>";
  var cal = CalendarApp.getCalendarById(calId);
  for (i in data) {
    if (i < headerRows) continue; // Skip header row(s)
    var row = data[i];
    var date = new Date(row[9]);
    var title = row[19]+" - "+row[3]+" - "+row[1]+" - "+row[2];
    var id = row[28];
    // Check if event already exists, delete it if it does
    try {
      var event = cal.getEventSeriesById(id);
      event.deleteEventSeries();
      row[28] = '';  // Remove event ID
    }
    catch (e) {
      // do nothing - we just want to avoid the exception when event doesn't exist
    }
    var newEvent = cal.createAllDayEvent(title, date).getId();
    row[28] = newEvent;  // Update the data array with event ID
    debugger;
  }
  // Record all event IDs to spreadsheet
  range.setValues(data);
};
它在很大程度上起作用。它会遍历电子表格,对于设置了日期的行,它会添加一个具有正确标题的日历条目

但是,这样做需要很长时间,我可以看日历,看脚本慢慢地一个接一个地添加事件。我想这几乎是瞬间的事。最重要的是,它永远不会真正结束。我不确定它是否无法完成,或者是否在可以完成之前超时,但它从未完成,它从未到达将事件ID写入电子表格的部分,这是一个问题,因为没有事件ID,函数将继续创建重复条目

可能与此相关的是,并非每一行都设置了日期,因此在循环运行的某些时候,不会创建任何事件,因为日期为Null


我遗漏了什么吗?我的脚本中有什么东西运行效率很低吗?我怎样才能加快速度,让它到达终点?

电子表格有多大?如果工作表中的行太多,则可能是脚本超时


我建议您创建一个基于时间的触发器,该触发器在一批中处理“n”行,一旦处理完工作表中的所有行,该触发器应删除自身。

它正在超时,但它没有那么大,它所做的只是将电子表格中的所有数据记录到一个数据数组中,然后将该数组用于函数的其余部分。它所要做的就是检查每一行的两个单元格,不会花那么长的时间,我觉得一定是出了什么问题,但我不知道是什么原因。如问题中所述,我可以看着日历,看着脚本慢慢地从一行转到下一行。说真的,我可以手动更新的速度比脚本快。它正在为每一行连接日历服务,这可能会增加执行时间。你看过脚本编辑器中的执行日志了吗?它显示了任何错误吗?嗯,在调查之后,它看起来可能会在这一行中被发现:event.deleteEventSeries;知道为什么吗?另外,我添加了一个函数和一行代码,让它跳过没有有效日期的行。