2012-07-13 213 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。]