1

我在谷歌脚本中使用 createEvent。

我无法添加事件,因为脚本没有正确读取电子表格中日期列的格式。

我需要一种格式为“2012 年 8 月 10 日 08:00:00”。但是当我检查我的日期时间的变量是由我的电子表格设置的时,格式包括星期几并且是完全错误的。我在电子表格中使用了格式选项,但这似乎只是一个视图控件,不会影响它的实际存储方式。

如何格式化我的电子表格以匹配 createEvent 函数所期望的格式?

谢谢

4

1 回答 1

3

CalendarApp.createEvent()startTimeendTime参数都需要一个 Date 对象。因此,电子表格中日期的文本格式并不重要——只要引用的单元格包含date

var s = SpreadsheetApp.getActiveSheet();
var eventDate = s.getRange("B17").getValue(); // August 10, 2012 08:00:00, a date

var eventTitle = "Example";
var eventDetails = "Details";

//Get the calendar
var cal = CalendarApp.getCalendarsByName('Calendar-Name')[0];//Change the calendar name
var eventStartTime = eventDate;
//End time is calculated by adding an hour in the event start time 
var eventEndTime = new Date(eventDate.valueOf()+60*60*1000);
//Create the events
cal.createEvent(eventTitle, eventStartTime,eventEndTime ,{description:eventDetails});

如果引用的单元格包含纯文本,则格式必须是 javascript Date 对象构造函数可以理解的格式。事实证明,您显示的格式是可以接受的,尽管由于没有明确说明时区,它将默认为电子表格的区域设置。这是您可以对上面的示例进行的一项更改:

// You could optionally generate a date object from the string representation
// HOWEVER createEvent() is smart enough to handle the string itself
var eventStartTime = new Date(eventDate);

如果您想进行实验,请查看 Waqar Ahmad关于该主题的教程。我能够通过粘贴您的示例日期字符串(2012 年 8 月 10 日 08:00:00)来创建一个事件。教程中的应用程序脚本代码盲目地根据从日历弹出窗口中选择的日期或键入的文本字符串创建日期对象。[注意教程代码中有错字,evenDate应阅读eventDate。]

于 2013-01-05T05:08:36.247 回答