2012-07-13 169 views
0

我在谷歌脚本中使用createEvent。谷歌日历格式Google电子表格日期

我无法添加该事件,因为我的日期列在电子表格中的格式化未被正确读取。

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

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

由于

回答

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); 

如果你想尝试,看看关于这个问题的瓦卡Ahmad的tutorial。我可以通过粘贴示例日期字符串来创建事件(2012年8月10日08:00:00)。本教程中的应用程序脚本代码会根据从日历弹出窗口中选择的日期或输入的文本字符串盲目创建日期对象。[请注意,教程代码中存在拼写错误,evenDate应该为eventDate。]