【发布时间】:2018-01-11 17:37:48
【问题描述】:
我有一个 Google 表格文档,其中电子表格中的每个表格都引用不同的文件。范围 B3:E5 始终用于关键期限、日期和相关的 Google 日历条目,如下所示:
B3:C3 (merged): Description; D3: Date; E3: [randomnumbers]@google.com
B4:C4 (merged): Description; D4: Date; E4: [randomnumbers]@google.com
B5:C5 (merged): Description; D5: Date; E5: [randomnumbers]@google.com
我有一个脚本,用于检查该范围的 E 列中提到的日历条目,如果不存在则创建一个,或者如果存在则更新条目,并使用 B:D 中的日期和描述信息。这是Create Google Calendar Events from Spreadsheet but prevent duplicates 上的最佳答案的修改形式。
我的问题是这些单元格并不总是包含信息(例如,我可能在第 3 行和第 5 行有信息,但在第 4 行没有)。在这种情况下,脚本仍会创建三个日历条目,但与空条目关联的条目(例如第 4 行中的条目)设置为“1969 年 12 月 31 日”。
我想建立一种方法来捕获这些空日期(或错误日期,其中脚本无法正确地将 D 列解释为日历条目的日期,例如,其中一个错字创建了“4 月 4 日, 2018”,它还会生成 1969 年 12 月 31 日的条目),并且在输入错误的情况下会出错,或者不会为没有数据条目创建事件。
这是我的脚本,里面有一些 cmets。我真的很感谢你们能提供的任何帮助。强制“不是特别精通 Javascript,因此我经常笨拙的 Google-fu”。
function exportEvents() {
var sheet = ss.getActiveSheet();
var range = sheet.getRange(3, 2, 3, 4); // Range: Key Deadlines Description and Dates (B3:E6)
var fileno = sheet.getSheetName();
var data = range.getValues();
var calID = "[calIDinformation]@group.calendar.google.com";
var cal = CalendarApp.getCalendarById(calID);
var formulas = sheet.getRange(3, 2, 1, 3).getFormulas(); // Snagging one line of formulae which get broken in this process; tofix?
for (i=0; i<data.length; i++) {
var row = data[i];
var description = row[0]; // First column (B - "Description")
var date = new Date(row[2]); // Third column (D - "Date")
var id = row[3]; // Fourth column (E - Dates, written in white)
// Check if event already exists, update it if it does
try {
var event = cal.getEventById(id);
}
// Catches an exception if no event exists
catch (e) {
}
if (!event) {
var newEvent = cal.createAllDayEvent(fileno+' - '+description, date).getId();
row[3] = newEvent; // Update the data array with event ID
}
else {
event.setTitle(fileno+' - '+description);
event.setAllDayDate(date);
}
debugger;
}
// Record all event IDs to spreadsheet and restore formulas in first row
range.setValues(data);
sheet.getRange(3, 2, 1, 3).setFormulas(formulas);
}
【问题讨论】:
标签: javascript google-apps-script