2

我正在尝试开发像缩放会议这样的谷歌日历插件。

在 appsscript.json 文件中,有以下代码。

 "calendar": {
      "conferenceSolution": [{
        "onCreateFunction": "createConference",
        "id": "1",
        "name": "Meeting",
        "logoUrl": "https://companyxyz.com/images/logo192.png"
      }],
      "eventOpenTrigger": {
        "runFunction": "buildSimpleCard"
      },
      "currentEventAccess": "READ_WRITE"      
    }
  }

在 Calendar.gs 中,有以下代码。

function createConference(e) {
  Logger.log(e);
  var dataBuilder = ConferenceDataService.newConferenceDataBuilder();
  return dataBuilder.build();  
}
/**
   * Build a simple card with a button that sends a notification.
   * This function is called as part of the eventOpenTrigger that builds
   * a UI when the user opens a Calendar event.
   *
   * @param e The event object passed to eventOpenTrigger function.
   * @return {Card}
   */
  function buildSimpleCard() {
    var buttonAction = CardService.newAction()
        .setFunctionName('onSaveConferenceOptionsButtonClicked')
        .setParameters(
          {'phone': "1555123467", 'adminEmail': "joyce@example.com"});
    var button = CardService.newTextButton()
        .setText('Add new attendee')
        .setOnClickAction(buttonAction);
    var buttonSet = CardService.newButtonSet()
      .addButton(button);

    var section = CardService.newCardSection()
               .setHeader("addon")
            .addWidget(buttonSet);

   var card = CardService.newCardBuilder()
      .addSection(section)
      //.setFixedFooter(footer);

   return card.build();
    // Check the event object to determine if the user can set
    // conference data and disable the button if not.
  //  if (!e.calendar.capabilities.canSetConferenceData) {
     // button.setDisabled(true);
 //   }

    // ...continue creating card sections and widgets, then create a Card
    // object to add them to. Return the built Card object.
  }

  /**
   * Callback function for a button action. Sets conference data for the
   * Calendar event being edited.
   *
   * @param {Object} e The action event object.
   * @return {CalendarEventActionResponse}
   */
  function onSaveConferenceOptionsButtonClicked(e) {
    var parameters = e.commonEventObject.parameters;

    // Create an entry point and a conference parameter.
    var phoneEntryPoint = ConferenceDataService.newEntryPoint()
      .setEntryPointType(ConferenceDataService.EntryPointType.PHONE)
      .setUri('tel:' + parameters['phone']);

    var adminEmailParameter = ConferenceDataService.newConferenceParameter()
        .setKey('adminEmail')
        .setValue(parameters['adminEmail']);

    // Create a conference data object to set to this Calendar event.
    var conferenceData = ConferenceDataService.newConferenceDataBuilder()
        .addEntryPoint(phoneEntryPoint)
        .addConferenceParameter(adminEmailParameter)
        .setConferenceSolutionId(1)
        .build();

    return CardService.newCalendarEventActionResponseBuilder()
        .setConferenceData(conferenceData)
        .build();
  }

我已经从Publish->Deploy from menifest发布了这个附加组件。

执行此代码给我的ReferenceError: ConferenceDataService is not defined错误。

我已经搜索了所有可能的参考资料,但无法获得任何解决方案。请为此建议我适当的解决方案。

4

1 回答 1

1

根据this issue here的评论,看起来这方面已经发生了变化。

测试上述代码时,ReferenceError: ConferenceDataService is not defined.不再显示,代码按预期运行。

对于特定于 的其他方法,您可以在此处ConferenceDataService查看文档。

参考

于 2020-04-27T13:18:53.060 回答