Google电子表格到Google日历格式的日期

时间:2012-07-13 18:06:34

标签: google-apps-script google-sheets google-calendar-api

我在google脚本编写中使用了createEvent。

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

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

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

由于

1 个答案:

答案 0 :(得分:2)

CalendarApp.createEvent()需要startTimeendTime参数的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关于此主题的tutorial。我能够通过粘贴你的示例日期字符串(2012年8月10日08:00:00)来创建一个事件。本教程中的应用程序脚本代码是从日历弹出窗口或输入的文本字符串中选择的任何日期盲目地创建日期对象。 [注意教程代码中有一个拼写错误evenDate应阅读eventDate。]