0

Google Add-Ons 已转向使用 CardService 小部件。我正在尝试创建一个下拉菜单,但不推荐使用 ListBox 类。文档将我转发到 HTML 服务,但在任何地方都没有关于如何在 CardServices 上下文中使用它们的文档。这是我的代码:

GetContextualAddOn.gs

function createReply(e) {
  var accessToken = e.messageMetadata.accessToken;
    GmailApp.setCurrentMessageAccessToken(accessToken);

  var messageId = e.messageMetadata.messageId;
    var message = GmailApp.getMessageById(messageId);
    var draft = message.createDraftReply("Got your message");

    return CardService.newComposeActionResponseBuilder()
        .setGmailDraft(draft).build();
}



function getContextualAddOn() {
  var card = CardService.newCardBuilder();
  card.setHeader(CardService.newCardHeader().setTitle('Respond to Email'));
  var section = CardService.newCardSection();
  var action = CardService.newAction().setFunctionName('createReply');

  function doGet() {
    return HtmlService.createHtmlOutputFromFile('dropdown');
  }

  section.addWidget(CardService
                    .newTextButton()
                    .setText('Respond')
                    .setComposeAction(action, CardService.ComposedEmailType.REPLY_AS_DRAFT));

  card.addSection(section);

  return [card.build()];
}

上面显示的 doGet() 方法正在尝试访问我创建的 dropdown.html 文件:

**dropdown.html**
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <p>test</p>
  </body>
</html>

我如何将 HTML 集成到我当前的 card.build 中?我应该以不同的方式处理它,如果是这样,有人可以提供代码示例吗?

4

2 回答 2

1

CardService 服务只能与 Gmail 插件一起使用。它们在 Google Docs 插件或使用 Apps 脚本构建的网络应用程序中不可用。

于 2018-05-15T18:11:50.320 回答
0

在我看来,您还不能在 Gmail 附加组件中使用自定义 HTML。您可以使用 HTML 服务在 Google Docs/Sheets Add-on 中使用它们。

在 Gmail 插件中,您可以使用卡片服务中的正确选择输入来创建下拉字段。官方文档在这里:https ://developers.google.com/apps-script/reference/card-service/selection-input

使用选择输入类型作为CardService.SelectionInputType.DROPDOWN

这是一个帮助您入门的代码示例:

var card = CardService.newCardBuilder();
card.setHeader(CardService.newCardHeader().setTitle('Dropdown Sample Card'));
var dropdownSection = CardService.newCardSection();
var dropdown = CardService.newSelectionInput()
   .setType(CardService.SelectionInputType.DROPDOWN)
   .setTitle("A Dropdown. Only a single selection is allowed.")
   .setFieldName("dropdown_field")
   .addItem("option one title", "option_one_value", true)
   .addItem("option  two title", "option_two_value", false)
   .addItem("option  three title", "option_three_value", false);

dropdownSection.addWidget(dropdown);
card.addSection(dropdownSection);
return [card.build()];
于 2018-06-08T09:04:48.077 回答