![](/img/trans.png)
[英]Google Apps Script trigger to create Google Calendar events is failing
[英]Google Apps Script: Batch Create Calendar Events with Variable Inputs for CalendarID
我正在嘗試制作一個任務計划程序,它可以讀取一個充滿任務的 Google 表格(任務名稱、開始時間、結束時間、分配給的人員)並自動在指定人員的日歷上創建一個日歷事件。
...基本上有我需要的一切,除了它只需要一個 CalendarID,而我認為我需要 CalendarID 作為循環的一部分。
在這種情況下,CalendarID 都是 email 地址。
這是我嘗試過的:
function scheduleTasks() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var signups = spreadsheet.getRange("E9:H13").getValues();
for (x=0; x<signups.length;x++)
{
var shift = signups[x];
var calendarID = shift[3];
var eventCal = CalendarApp.getCalendarById(calendarId);
var task= shift[0];
var startTime = shift[1];
var endTime = shift[2];
eventCal.createEvent(volunteer, startTime, endTime);
}
}
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Sync to Calendar')
.addItem('Schedule tasks now', 'scheduleTasks')
.addToUi();
}
這是我得到的錯誤:
上午 8:38:40 錯誤類型錯誤:無法讀取 null scheduleTasks @ Code.gs:12 的屬性“createEvent”
以前從未使用過 JS/Google Apps 腳本,因此感謝您提供任何建議,謝謝
calendarId
var eventCal = CalendarApp.getCalendarById(calendarId);
未聲明。 從您的腳本和顯示的示例圖像中,我認為calendarId
是var calendarID = shift[3];
.volunteer
未申報。 從您顯示的示例圖像中,我認為var task = shift[0]
可能是volunteer
。當這些點反映在你的腳本中時,它變成如下。
function scheduleTasks() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var signups = spreadsheet.getRange("E9:H13").getValues();
for (x = 0; x < signups.length; x++) {
var shift = signups[x];
var calendarID = shift[3];
var eventCal = CalendarApp.getCalendarById(calendarID);
var task = shift[0];
var startTime = shift[1];
var endTime = shift[2];
eventCal.createEvent(task, startTime, endTime);
}
}
startTime, endTime
的值不是日期對象時,會發生錯誤。 請注意這一點。剛剛給它一個 go ,這似乎工作:
function scheduleTasks() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var signups = spreadsheet.getRange("E9:H13").getValues();
for (x=0; x<signups.length;x++)
{
var shift = signups[x];
var calendarID = shift[3];
if(calendarID){
var eventCal = CalendarApp.getCalendarById(calendarID);
var task= shift[0];
var startTime = shift[1];
var endTime = shift[2];
eventCal.createEvent(task, startTime, endTime);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.