google-apps-script - 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"
当它执行时,它总是将事件添加到第一个事件。
知道为什么会发生这种情况吗?
解决方案
您正在默认日历中创建事件:
var event = CalendarApp.getDefaultCalendar().createEvent(title, startDate, endDate);
尝试将其更改为:
var event = calendar.createEvent(title, startDate, endDate);
这样,您将使用之前在该行中(通过 ID)找到的日历:
var calendar = CalendarApp.getCalendarById(calendarId);
推荐阅读
- azure - 如何从 Web 应用访问使用 Azure AD B2C 保护的两个单独的 Web API
- laravel - 无法两次跟踪流明作业调度
- f# - 在 F# 中反转整数
- python - 在 ax.set_title 中包含多个变量?
- google-sheets - 填写 ={ARRAYFORMULA()} 中的空白单元格
- prometheus - 普罗米修斯中速率函数的总和
- flutter - 显示带有维护底部 AppBar 的特定列表的页面 - Flutter
- if-statement - 范围检查逻辑?
- javascript - Firebase getDownloadUrl 起初无法正常工作,我需要重新加载页面
- c++ - 如何使用 std::is_same 检测通用引用参数类型