【发布时间】:2020-01-11 18:18:27
【问题描述】:
我有这段代码从电子表格单元格中读取任务名称和日期,并在该日期安排一个带有任务名称的全天日历事件。
/** @OnlyCurrentDoc */
function AddToCalendar1(){
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process - 2 exempts my header row
var numRows = sheet.getLastRow(); // Number of rows to process
var numColumns = sheet.getLastColumn();
var dataRange = sheet.getRange(startRow, 1, numRows-1, numColumns);
var data = dataRange.getValues();
var complete = "Yes";
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var eventDate = row[0]; //date to schedule
var task = row[1]; //job description
var status = row[2] // Scheduled?
if (status != complete) {
var currentCell = sheet.getRange(startRow + i, 3);
var c =CalendarApp.getDefaultCalendar();
var event = c.createAllDayEvent(task, new Date(eventDate));
Logger.log('Event ID: ' + event.getId());
currentCell.setValue(complete);
}
}
}
问题现在是 GMT-3 晚上 11:10(不确定是否重要)
该单元格的值为'2019-09-09'
但是'eventDate' 是'Sun Sep 08 2019 23:00:00 GMT-0400 (EDT)'
所以任务安排在前一天。
我该如何更改?
日历和电子表格具有相同的时区配置,即 GMT-3
我应该/我可以更改脚本正在执行的时区吗?
编辑 我刚刚发现增加了几个小时就可以完成这项工作,但它看起来不像是正确的解决方案
var event = c.createAllDayEvent(task, new Date(eventDate.getTime()+3600000*10));
编辑2
这是运行测试函数的结果
[19-09-10 13:44:06:319 ART] Sheet time zone: America/Los_Angeles
[19-09-10 13:44:06:320 ART] Script time zone: America/New_York
[19-09-10 13:44:06:414 ART] Date from sheet: Thu Oct 10 2019 03:00:00 GMT-0400 (EDT)
另外,不确定现在有什么变化我在这行有错误
var event = CalendarApp.getDefaultCalendar().createAllDayEvent(task, new Date(eventDate.getTime()+3600000*10));
Cannot find function getTime in object .
【问题讨论】:
标签: google-apps-script google-sheets google-api google-calendar-api google-api-js-client