在一个日历中创建活动,添加到另一个日历,并将其标记为“进行”并使用 Google Apps 脚本发送邀请

问题描述 投票:0回答:1

我有两个日历:我的

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
日历中创建事件,但未接受/进行。

enter image description here

google-apps-script calendar google-calendar-api
1个回答
0
投票

创建系列活动,邀请您有权访问的日历并将其标记为进行(是)

我创建了一个示例脚本,您可以将其用作参考。剧本实际上很好而且非常有效。然而我注意到这部分代码引入了一些侥幸的结果。

"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)
}

结果截图:

Screenshot Calendar (YES)

参考:

日历活动系列

设置我的状态()

© www.soinside.com 2019 - 2024. All rights reserved.