Google apps script ReferenceError:未定义ConferenceDataService

Google apps script ReferenceError:未定义ConferenceDataService,google-apps-script,gsuite-addons,Google Apps Script,Gsuite Addons,我正在尝试开发谷歌日历插件,比如zoom meeting 在appsscript.json文件中,有下面的代码 "calendar": { "conferenceSolution": [{ "onCreateFunction": "createConference", "id": "1", "name": "Meeting", "logoUrl": "https://companyxyz.com/images/logo

我正在尝试开发谷歌日历插件,比如zoom meeting

在appsscript.json文件中,有下面的代码

 "calendar": {
      "conferenceSolution": [{
        "onCreateFunction": "createConference",
        "id": "1",
        "name": "Meeting",
        "logoUrl": "https://companyxyz.com/images/logo192.png"
      }],
      "eventOpenTrigger": {
        "runFunction": "buildSimpleCard"
      },
      "currentEventAccess": "READ_WRITE"      
    }
  }
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();
  }
在Calendar.gs中,有以下代码

 "calendar": {
      "conferenceSolution": [{
        "onCreateFunction": "createConference",
        "id": "1",
        "name": "Meeting",
        "logoUrl": "https://companyxyz.com/images/logo192.png"
      }],
      "eventOpenTrigger": {
        "runFunction": "buildSimpleCard"
      },
      "currentEventAccess": "READ_WRITE"      
    }
  }
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();
  }
我已经从menifest的发布部署发布了这个插件

执行此代码时出现错误ReferenceError:ConferenceDataService未定义

我搜索了所有可能的参考资料,但没有找到任何解决方案。
请为我提供适当的解决方案。

根据本期的评论,这方面似乎有了变化

测试上述代码时,未定义
ReferenceError:ConferenceDataService。
不再显示,代码按预期运行

有关特定于
ConferenceDataService
的其他方法,您可以查看文档

参考文献

Hello@SonalShah,您是否从应用程序脚本中打开了日历API?您可以查看是否转到
资源
->
高级谷歌服务
。干杯对我已打开日历API。我在某个地方查到,开发者需要被列入白名单才能访问conferencedata服务。但是找不到相同的流程。Hello@SonalShah,您的项目使用哪个运行时版本?干杯我使用的是弃用的_ES5 runtime versionHello@SonalShah,如本文档所述,“目前,您只能将此服务与日历会议加载项或与Google日历会议交互的G套件加载项结合使用。只有连接到第三方会议系统的加载项才需要此服务”。您能否确认这是您当前遇到问题的行为?干杯