簡體   English   中英

Google Apps 腳本:使用 CalendarID 的變量輸入批量創建日歷事件

[英]Google Apps Script: Batch Create Calendar Events with Variable Inputs for CalendarID

我正在嘗試制作一個任務計划程序,它可以讀取一個充滿任務的 Google 表格(任務名稱、開始時間、結束時間、分配給的人員)並自動在指定人員的日歷上創建一個日歷事件。

本教程: https://cloud.google.com/blog/products/g-suite/g-suite-pro-tip-how-to-automatically-add-a-schedule-from-google-sheets-into-calendar

...基本上有我需要的一切,除了它只需要一個 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 腳本,因此感謝您提供任何建議,謝謝

我的輸入數據

修改點:

  • var eventCal 的calendarId var eventCal = CalendarApp.getCalendarById(calendarId); 未聲明。 從您的腳本和顯示的示例圖像中,我認為calendarIdvar 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);
  }
}

筆記:

  • 在這個修改后的腳本中,當日歷ID不存在且您沒有日歷ID的日歷的寫入權限且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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM