我有两个日历:我的
main one
和 second one
。我正在 second one
中创建一个活动并邀请自己,以便它显示在 main one
上。我还邀请其他地址。
但是:
main one
日历上,它显示为不去。我想将其标记为进行。我尝试在
main one
日历上查找该活动,但存在某种时间问题,因为该活动需要一些时间才能显示在 main one
上,所以我找不到它来接受它。
我知道我可以添加延迟,但这看起来很笨拙。但这仍然无法解决邀请未发送的问题。
下面的代码显示了我在说什么:
function doIt() {
var CALENDAR_HOME = CalendarApp.getDefaultCalendar();
var CALENDAR_TEST = CalendarApp.getOwnedCalendarsByName("test")[0];
var startTime = new Date();
var endTime = new Date();
endTime.setTime(startTime.getTime() + (1 * 60 * 60 * 1000));
var newEventSeries = CALENDAR_TEST.createEventSeries(
"this is a test for creating events",
startTime,
endTime,
CalendarApp.newRecurrence().addDailyRule(),
{
"guests": `${CALENDAR_HOME.getId()}, [email protected]`,
"sendInvites": true,
"location": "here"
}
);
Logger.log(CALENDAR_HOME.getEventSeriesById(newEventSeries.getId())); // logs null
Logger.log(CALENDAR_HOME.getEvents(
new Date(1900, 0, 1),
new Date(3000, 0, 1),
{
"search": "this is a test for creating events"
}
).length); // logs 0
}
在此屏幕截图中,您可以看到它如何在
main one
日历中创建事件,但未接受/进行。
我创建了一个示例脚本,您可以将其用作参考。剧本实际上很好而且非常有效。然而我注意到这部分代码引入了一些侥幸的结果。
"guests": `*${CALENDAR_HOME.getId()*}, [email protected]"
通过我创建的一系列测试,我建议您向访客提供电子邮件,而不是访问对象属性。这应该可以解决您的邀请问题。
function createSeriesEvents(){
//var CALENDAR_HOME = CalendarApp.getDefaultCalendar(); // I removed this instead
var cguest = ["[email protected], [email protected]"]
var calendarM = CalendarApp.getDefaultCalendar();
var startTime = new Date();
var endTime = new Date();
endTime.setTime(startTime.getTime() + (1 * 60 * 60 * 1000));
var recurrence = CalendarApp.newRecurrence().addDailyRule().times(5);
var option = { "guests": cguest[0],
"sendInvites": true,}
var nSeries = calendarM.createEventSeries("Going Create Event",startTime,endTime, recurrence, option).getId();
updateMyStatus(nSeries);
console.log("Success")
}
function updateMyStatus(eventSID){
var mainC = CalendarApp.getCalendarById("[email protected]");
var event = mainC.getEventSeriesById(eventSID);
event.setMyStatus(CalendarApp.GuestStatus.YES)
}