Использование CardService с HtmlService
Надстройки Google стремятся использовать виджеты 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? Должен ли я подходить к этому по-другому, и если да, может ли кто-нибудь предоставить пример кода?
2 ответа
Сервис CardService может использоваться только с надстройками Gmail. Они недоступны в надстройках Документов Google или в веб-приложениях, созданных с помощью Apps Script.
На мой взгляд, вы пока не можете использовать собственный HTML в дополнениях Gmail. Тем не менее, вы можете использовать их в Google Docs/Sheets Add-on, используя HTML-сервис.
В дополнениях 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()];