首页 > 解决方案 > 在高级日历更新后显示对日历事件的更改

问题描述

我正在通过单击附加边栏中的按钮以编程方式更新日历事件。我想将会议数据添加到事件中,并在我这样做时让会议出现在事件中。

我可以很好地使用会议数据更新活动,但我必须刷新页面才能看到活动中的会议。如何让会议在不刷新的情况下显示?

我知道这是可能的,因为缩放插件正是这样做的。

function createConference(e, label, uri) {
  var event = Calendar.Events.get(e.calendar.calendarId, event.id);

  event.conferenceData = {
    conferenceId: newWaitingRoom._id,
    entryPoints: [
      {
        label: label,
        entryPointType: 'video',
        uri: uri
      }
    ],
    conferenceSolution: {
      key: { type: 'addOn' },
      name: 'Digideck Live',
    }
  }

  try {
    event = Calendar.Events.update(event, e.calendar.calendarId, event.id, { conferenceDataVersion: 1 }, { 'If-Match': event.etag });
    Logger.log('Successfully updated event: ' + event.id);
  } catch (err) {
     Logger.log('Fetch threw an exception: ' + err);
     throw Error(err);
  }

  var nav = CardService.newNavigation().updateCard(createdConferenceCard);

  return CardService.newActionResponseBuilder()
    .setNavigation(nav)
    .build();

}

缩放插件示例

图1: 点击添加会议按钮之前

图二: 点击添加会议按钮后(无其他交互,无刷新)

任何帮助是极大的赞赏!

标签: google-apps-scriptgoogle-calendar-api

解决方案


我想到了。您必须返回,而不是使用高级日历 API

return CardService.newCalendarEventActionResponseBuilder()
    .setConferenceData(ConferenceData).build();

编辑:还发现"currentEventAccess": "READ_WRITE"appsscript.json文件中的设置对于能够通过“eventOpenTrigger”等从选定事件中获取会议数据很重要


推荐阅读