我在 Google 表格單元格 U69、U70、X69 中分別有事件、開始日期和結束日期的標題。
它說在腳本中執行成功,但沒有添加事件。
function calendar() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var eventCal = CalendarApp.getCalendarById("[email protected]");
var name = spreadsheet.getRange('U69').getValue();
var start = new Date(spreadsheet.getRange('U70').getValue());
var end = new Date(spreadsheet.getRange('X69').getValue());
eventCal.createEvent(name,start,end);
Logger.log('Reminder is added to your calendar');
}
編輯2:
PS - 我是在一張紙上做的,我是這張紙的所有者。我也在創建腳本。我正在運行它,但在日歷上看不到條目。
5 個人可以訪問該作業表。我已從日歷設定部分授予對所有 5 個“進行更改和管理共享”的訪問權限。
請幫忙。我究竟做錯了什么?語法錯誤在哪里?我是否正確地為變數加上引號?或者是別的什么?
編輯 3: 我添加了 logger.log(日歷)。它在腳本中說執行成功(根據附加的影像),但沒有添加事件。
function calendar() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var calendarId = spreadsheet.getRange("AA69").getValue();
var eventCal = CalendarApp.getCalendarById("[email protected]");
var name = spreadsheet.getRange('U69').getValue();
var start = new Date(spreadsheet.getRange('U70').getValue());
var end = new Date(spreadsheet.getRange('X69').getValue());
eventCal.createEvent(name,start,end);
Logger.log(calendarId);
}
[![在此處輸入影像描述][1]][1]
Edit 4: I checked with ISDATE() formula. Both U70 and X69 are True. The code also shows execution done. Logger.Log also gives correct cell value.
What should I do with syntax nw? event is still not getting added.
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Course');
var eventCal = CalendarApp.getCalendarById('[email protected]');
var name = spreadsheet.getRange('U69').getValue();
var start = spreadsheet.getRange('U70').getDisplayValue();
var end = spreadsheet.getRange('X69').getDisplayValue();
eventCal.createEvent(name,new Date(start),new Date(end));
Logger.log(end);
}
Edit 5: Mike's answer has helped me. Thank you so much, Mike
uj5u.com熱心網友回復:
這是一個代碼,可以通過 3 種方式正常作業 getCalendarsByName、getCalendarById、getDefaultCalendar
function testCalendar() {
var sh = SpreadsheetApp.getActiveSheet()
var start = new Date(sh.getRange('A1').getValue()).getTime()
var end = new Date(sh.getRange('A2').getValue()).getTime()
var calendName = CalendarApp.getCalendarsByName('alertes');
var calendById = CalendarApp.getCalendarById('[email protected]')
var calend = CalendarApp.getDefaultCalendar()
calendName[0].createEvent('test script createEvent', new Date(start), new Date(end)).addSmsReminder(0);
calendById.createEvent('test script createEvent', new Date(start), new Date(end)).addSmsReminder(0);
calend.createEvent('test script createEvent', new Date(start), new Date(end)).addSmsReminder(0);
}
所以,我建議你試試
function calendar() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var eventCal = CalendarApp.getCalendarById("[email protected]");
var name = spreadsheet.getRange('U69').getValue();
var start = new Date(spreadsheet.getRange('U70').getValue()).getTime();
var end = new Date(spreadsheet.getRange('X69').getValue()).getTime();
eventCal.createEvent(name,new Date(start),new Date(end));
Logger.log('Reminder is added to your calendar');
}


uj5u.com熱心網友回復:
如果日歷不存在、用戶無法訪問或用戶未訂閱日歷,則您擁有的原因eventCal.createEvent...... TypeError: Cannot read property 'createEvent' of null是CalendarApp.getCalendarById(calendar id)回傳null 。
要解決此問題,請確保您對日歷具有??編輯權限并重新運行您的代碼。如果您可以訪問日歷,它應該回傳一個日歷類,并且在該日歷類中是createEvent()方法。
更新#1:
鑒于 OP 也是日歷的所有者,一個可能的原因是 的值var calendarId不是日歷的有效 id。您可以嘗試通過Logger.log(calendarId)在其下方添加來除錯它,以檢查您是否能夠獲取單元格AA69中日歷 ID 的值。
按照此鏈接了解如何獲取日歷 ID。
更新#2:
對于日期問題,您可以選擇以下選項:
- 洗掉
new Date()instart和end變數。
要么
- 使用
getDisplayValue()而不是getValue().
參考:
- getCalendarById(id)
- 類日歷
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/438816.html
標籤:google-apps-script google-sheets google-calendar-api
上一篇:下載GoogleSheets檔案并在Node上使用SheetJS讀取資料
下一篇:谷歌表格中的查詢故障
