Google Apps脚本日历服务:如何避免超出最长执行时间?

问题描述 投票:0回答:1

我需要通过Google Apps脚本编辑几百个甚至几千个日历事件。它只是对标题(event.setTitle())和说明(event.setDescription())的微小改动,没有什么花哨的地方。尝试处理大约600个事件,已经超过了360秒的最大执行时间。

var cal = CalendarApp.getCalendarById("Calendar Id");
var startTime = new Date(1850, 0, 1);
var endTime = new Date(2100, 0, 1);
var events = cal.getEvents(startTime, endTime);
for (var i = 0; i < events.length; i++) {
  events[i].setTitle(events[i].getTitle() + " something");
  events[i].setDescription(events[i].getDescription() + " something else");
}

如何依次处理多个事件?

javascript google-apps-script google-calendar-api
1个回答
0
投票

答案:

使用PropertiesService保存到达的位置,以便在下次运行时可以从左移的位置继续。

代码:

您可以使用PropertiesService键值对通过events[]保存计数值:

function renameEvents() {
  var cal = CalendarApp.getCalendarById("Calendar Id");
  var startTime = new Date(1850, 0, 1);
  var endTime = new Date(2100, 0, 1);
  var events = cal.getEvents(startTime, endTime);
  var sp = PropertiesService.getScriptProperties();
  if (!(sp.getProperty("count")) || sp.getProperty("count") == 0) {
    var count = 0;
  else if ((sp.getProperty("count") > 0) {
    var count = sp.getProperty("count");
  }

  for (var i = count; i < events.length; i++) {
    events[i].setTitle(events[i].getTitle() + " something");
    events[i].setDescription(events[i].getDescription() + " something else");
    sp.setProperty("count", i)
  }
}

它将使脚本变慢一些,但是每次运行它时,它将沿着日历事件从上一个停止的位置继续进行。

希望对您有帮助!

参考:

© www.soinside.com 2019 - 2024. All rights reserved.