首页 > 解决方案 > CalendarApp CreateEvent 在错误的日历上创建事件(具有不同 ID 的日历)

问题描述

我正在尝试为我的电子表格文档中的每一行有条件地添加一个日历事件到 2 个日历。

function createCalendarEvent(calendarId, row) {
   var spreadsheet = SpreadsheetApp.getActiveSheet();
   var lastName = spreadsheet.getRange(row, 4).getValue();
   var firstName = spreadsheet.getRange(row, 3).getValue();
   var title = lastName + ", " + firstName;
   var eventDate = spreadsheet.getRange(row, 12).getValue();
   var startTime = new Date(spreadsheet.getRange(row, 14).getValue());
   var endTime = new Date(spreadsheet.getRange(row, 15).getValue());
   var startDate = new Date(startTime.getTime());
   var endDate = new Date(endTime.getTime());
   startDate.setYear(eventDate.getYear());
   startDate.setMonth(eventDate.getMonth());
   startDate.setDate(eventDate.getDate());
   endDate.setYear(eventDate.getYear());
   endDate.setMonth(eventDate.getMonth());
   endDate.setDate(eventDate.getDate());
   var calendar = CalendarApp.getCalendarById(calendarId);
   Logger.log(calendar.getName());
   Logger.log(calendar.isOwnedByMe());
   Logger.log(calendar.getId());
   Logger.log(calendar.setSelected(true));
   var event = CalendarApp.getDefaultCalendar().createEvent(title, 
   startDate, endDate);
   Logger.log('Event ID: ' + event.getId());
}

我拥有并作为参数传递给函数的 2 个日历 ID 如下所示:

"[my email username]@[my organization domain].com"

 "[somename].com_00t1jhqpsu15fcprbl98qg8erk@group.calendar.google.com"

当它执行时,它总是将事件添加到第一个事件。

知道为什么会发生这种情况吗?

标签: google-apps-scriptgoogle-calendar-apigoogle-sheets-api

解决方案


您正在默认日历中创建事件:

var event = CalendarApp.getDefaultCalendar().createEvent(title, startDate, endDate);

你可以在这里找到文档

尝试将其更改为:

var event = calendar.createEvent(title, startDate, endDate);

这样,您将使用之前在该行中(通过 ID)找到的日历:

var calendar = CalendarApp.getCalendarById(calendarId);

推荐阅读