Google脚本超过了最大执行时间&/Google Cal脚本 [英] Google Script "Exceeded Maximum Execution Time" / Google Cal Script
本文介绍了Google脚本超过了最大执行时间&/Google Cal脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
所以,基于大量的互联网调查,我设法拼凑出了一个使用谷歌工作表创建全天日历条目的脚本。我想要为大约450行内容创建事件,但每次我运行该脚本时,它永远不会到达结尾,它也不会创建EventID(以处理重复项),相反,它会给我一个"Expered Maximum Execution Time"错误。
$ function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "Export Events",
functionName : "exportEvents"
}];
sheet.addMenu("Calendar Actions", entries);
};
function exportEvents() {
var sheet = SpreadsheetApp.getActiveSheet();
var headerRows = 0; // Number of rows of header info (to skip)
var range = sheet.getDataRange();
var data = range.getValues();
var calId = "evsck12.com_fp4p25esvij964uhmfs51o9ar8@group.calendar.google.com";
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[0]); // First column
var title = row[1]; // Second column
var id = row[3]; // Sixth column == eventId
// Check if event already exists, update it if it does
try {
var event = cal.getEventSeriesById(id);
}
catch (e) {
// do nothing - we just want to avoid the exception when event doesn't exist
}
if (!event) {
var newEvent = cal.createAllDayEvent(title, date).getId();
row[3] = newEvent; // Update the data array with event ID
}
else {
event.setTitle(title);
range.setValues(data);
}
debugger;
}
}
我的问题如下:
- 如何避免此错误?如果我将数据拆分成几张工作表,行吗?
- 无论如何我都不能让EventID部分填充...我设法在试卷上做了,但我不能再做了。任何帮助都是非常棒的!
谢谢!
推荐答案
首先是代码中的几个错误...
- 您更新了第[3]行,但忘记了用其对应的行值更新数据,我简化了只使用数据作为变量的做法。
- 您使用
row[3]
作为第三列,它是row[2]
(现在是data[i][2]
) - 您在循环中的错误位置更新了工作表
创建documentation on trigger将对您有所帮助,the scriptProperties是将索引值保存在键/值模式中的理想位置。另请参阅文档。
如果您对此有问题,请毫不犹豫地提出新的问题。
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 = "h22nevo15tm0nojb6ul4hu7ft8@group.calendar.google.com";
var cal = CalendarApp.getCalendarById(calId);
for (i in data) {
if (i < headerRows) continue; // Skip header row(s)
var date = new Date(data[i][0]); // First column
var title = data[i][1]; // Second column
var id = data[i][2]; // third column == eventId
// Check if event already exists, update it if it does
try {
var event = cal.getEventSeriesById(id);
}
catch (e) {
// do nothing - we just want to avoid the exception when event doesn't exist
}
if (!event) {
Logger.log(event);
var newEvent = cal.createAllDayEvent(title, date);
data[i][2] = newEvent.getId(); // Update the data array with event ID
}
else {
event.setTitle(title);
}
}
Logger.log(data);
sheet.getRange(1,1,data.length,data[0].length).setValues(data);
}
这篇关于Google脚本超过了最大执行时间&/Google Cal脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文