通过电子表格更新活动后,如何重新发送电子邮件邀请?

时间:2019-09-08 08:48:36

标签: google-apps-script google-sheets

我有一个项目,我打算在电子表格中计划多个事件,我想将这些事件直接同步到Google日历,并向邀请我作为活动邀请对象的人员发送电子邮件邀请。

但是,当我想通过电子表格更新事件信息时,也想更新电子邮件邀请,这样人们就必须再次确认是否要参加该事件。

我已尝试对该MIT许可程序进行一些更改(这几乎是我所需要的,但它不发送我所需要的更新的电子邮件邀请)。我真的不删除该事件并使用更新的信息来创建新事件,因为我想更新旧事件并重新发送邀请(更适合我的需要)

程序是这个https://github.com/Davepar/gcalendarsync/blob/master/gcalendarsync.js

要重新发送电子邮件邀请,我需要更改什么?

我认为我应该在某个地方添加一些 sendNotifications -但在哪里?

我相信解决我的问题的方法非常简单,但我不够聪明,无法解决。

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您正在使用UI中的“更新到日历”菜单来运行syncToCalendar()函数。在该函数内部,代码应根据以下条件更新事件(第434-446行[1]):

    if (eventDiffs > 0) {
      // When there are only 1 or 2 event differences, it's quicker to
      // update the event. For more event diffs, delete and re-add the event. The one
      // exception is if the event has guests (eventDiffs=99). We don't
      // want to force guests to re-confirm, so go through the slow update
      // process instead.
      if (eventDiffs < 3 && eventDiffs !== EVENT_DIFFS_WITH_GUESTS) {
        numUpdates += updateEvent(calEvent, convertedCalEvent, sheetEvent);
      } else {
        addEvent = true;
        calEventIds[eventIdx] = sheetEvent.id;
      }
    }

仅当事件中没有任何来宾并且事件与表单中的更新信息之间的更改少于3个时,代码才会更新事件。您应该将这段代码更改为:

    if (eventDiffs > 0) {
        numUpdates += updateEvent(calEvent, convertedCalEvent, sheetEvent);
    }

这样,代码将更新所有事件,与工作表中的更新信息至少有一个差异

[1] https://github.com/Davepar/gcalendarsync/blob/master/gcalendarsync.js#L434