我需要通过 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/