javascript - Google Apps 脚本日历服务 : How to avoid exceeding maximum execution time?

标签 javascript google-apps-script google-calendar-api

我需要通过 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");
}

如何连续处理多个 block 中的事件?

最佳答案

答案:

使用 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)
  }
}

这会使脚本稍微慢一些,但每次运行它时,它都会从上一个停止的地方继续沿着日历事件进行。

引用文献:

关于javascript - Google Apps 脚本日历服务 : How to avoid exceeding maximum execution time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60834955/

相关文章:

javascript - 如何从 .html 页面链接到 .ejs 页面?

javascript - JavaScript 可以与 CSS 交互吗?

javascript - 在 Google AdWords 中创建可重复使用的函数

python - 任何无需 token.pickle 即可创建新 Google 日历事件的方法

google-calendar-api - 雅虎日历结束时间不考虑时区

javascript - 如何在不使用cookie的情况下传递参数时将用户重定向到另一个页面

javascript - 使用 appscript 的 SpreadsheetApp.openById 错误

javascript - 对使用 Google 电子表格维护/更新 Google 日历(包括自动更改颜色)的脚本进行故障排除

node.js - 使用 OAuth 时的 Google 日历 "The request is missing a valid API key"

javascript - 删除 Highcharts 上的导出和打印按钮插件