[英]Need help in Google App Script for Creating event in Google Calendar
我需要帮助创建一个谷歌应用程序脚本以在谷歌日历中创建事件,遵循我正在使用的代码,但给出了错误“无法读取 null 的属性'setColor'”用于颜色设置。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Test jun")
var index = 2;
var lastRow = sheet.getLastRow();
for (; index <= lastRow; index++) {
var title = sheet.getRange(index, 1, 1, 1).getValue();
var startTime = sheet.getRange(index, 2, 1, 1).getValue();
var endTime = sheet.getRange(index, 3, 1, 1).getValue();
var description = sheet.getRange(index, 4, 1, 1).getValue();
var location = sheet.getRange(index, 5, 1, 1).getValue();
var guests = sheet.getRange(index, 6, 1, 1).getValue();
var eventColour = sheet.getRange(index, 7, 1, 1).getValue();
var sendInvites = true;
var calendar = CalendarApp.getCalendarById("rhse6nvlklu7n2pm86jaiuqsis@group.calendar.google.com").createEvent(title, startTime, endTime,
{ description: description, location: location, guests: guests, sendInvites: sendInvites }).getId();
if (eventColour === 'Condition1') CalendarApp.getEventById(calendar).setColor("10")
if (eventColour === "Condition2") CalendarApp.getEventById(calendar).setColor("11");
if (eventColour === "Condition3") CalendarApp.getEventById(calendar).setColor("12");
if (eventColour === "Condition4") CalendarApp.getEventById(calendar).setColor("13");
}// End of For Loop
}// End of Function
请帮忙。
当我看到你的var calendar = CalendarApp.getCalendarById("rhse6nvlklu7n2pm86jaiuqsis@group.calendar.google.com").createEvent(title, startTime, endTime, {description: description, location: location, guests: guests, sendInvites: sendInvites }).getId();
, 事件被创建到除默认日历之外的日历。
Class Class CalendarApp的getEventById(iCalId)
的官方文档说如下。
获取具有给定 ID 的事件。 如果系列属于默认日历以外的日历,则必须从该
CalendarApp
调用此方法。 调用getEventById(iCalId)
仅返回默认日历中的事件。
在这种情况下,需要从特定日历中检索事件。
setColor()
。 此外,在您的脚本中,使用了10, 11, 12, 13
的事件颜色 ID。 但是在当前阶段,事件颜色是从1到11。请注意这一点。
在您的脚本中,您的每个 if 语句都是独立的。 所以你可以使用else
。
当以上几点反映到您的脚本时,它变成如下。
var calendar = CalendarApp.getCalendarById("rhse6nvlklu7n2pm86jaiuqsis@group.calendar.google.com").createEvent(title, startTime, endTime, {description: description, location: location, guests: guests, sendInvites: sendInvites }).getId(); if (eventColour === 'Condition1') CalendarApp.getEventById(calendar).setColor("10") if (eventColour === "Condition2") CalendarApp.getEventById(calendar).setColor("11"); if (eventColour === "Condition3") CalendarApp.getEventById(calendar).setColor("12"); if (eventColour === "Condition4") CalendarApp.getEventById(calendar).setColor("13");
至:
var event = CalendarApp.getCalendarById("rhse6nvlklu7n2pm86jaiuqsis@group.calendar.google.com").createEvent(title, startTime, endTime, { description: description, location: location, guests: guests, sendInvites: sendInvites }); if (eventColour === 'Condition1') { event.setColor("1"); } else if (eventColour === "Condition2") { event.setColor("2"); } else if (eventColour === "Condition3") { event.setColor("3"); } else if (eventColour === "Condition4") { event.setColor("4"); }
或者,您也可以使用 object 修改脚本,如下所示。
var obj = {"Condition1": "1", "Condition2": "2", "Condition3": "3", "Condition4": "4"}; CalendarApp.getCalendarById("rhse6nvlklu7n2pm86jaiuqsis@group.calendar.google.com").createEvent(title, startTime, endTime, { description: description, location: location, guests: guests, sendInvites: sendInvites }).setColor(obj[eventColour] || "11"); // In this case, when "eventColour" is not included in "obj", "11" of event color is used.
CalendarApp.getCalendarById("rhse6nvlklu7n2pm86jaiuqsis@group.calendar.google.com").getEventById({eventId}).setColor("1");
.CalendarApp.EventColor.BLUE
一样使用它。 参考
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.