我制作了一个Google App脚本来自动回复我的电子邮件(一种聪明的电子邮件机器人助手)。不过,我想在发送之前检查机器人的每个答案。
因此,我希望在Gmail上有一个窗口,其中显示用户电子邮件和机器人应答,以及两个按钮“发送”“跳过”。这样,我可以检查机器人准备的答案,然后发送或跳过它(或可能对其进行编辑)。
如何通过Google App脚本在GMail上显示包含文本,editText和按钮的窗口?
谢谢!
致谢。
答案 0 :(得分:2)
您必须检查Gmail加载项:https://developers.google.com/gsuite/add-ons/gmail
首先,您可以从Google检查代码实验室,它会为您提供在5分钟内设置第一个附加组件的代码,然后您可以根据需要进行调整:https://codelabs.developers.google.com/codelabs/apps-script-intro/
史蒂芬(Stéphane)
答案 1 :(得分:1)
一个简单的解决方案是让机器人将电子邮件另存为“草稿”。这样,您可以在手动发送之前轻松检查电子邮件。
如果您仍然对创建gmail附件(可以显示原始电子邮件,回复以及用于发送或编辑的按钮)感兴趣,则可能对构建card-based interfaces感兴趣。这些将显示在您的Gmail Web客户端的右侧,并且如下所示:
用于显示这种界面的代码(带有两个按钮,一个自动发送电子邮件,另一个打开其上的编辑器)如下:
function buildAddOn(e) {
// Activate temporary Gmail add-on scopes.
var accessToken = e.messageMetadata.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
return buildDraftCard(getNextDraft());
}
function buildDraftCard(draft) {
if (!draft) {
var header = CardService.newCardHeader().setTitle('Nothing to see here');
return CardService.newCardBuilder().setHeader(header).build();
} else {
var header = CardService.newCardHeader()
.setTitle(draft.getMessage().getSubject());
var section = CardService.newCardSection();
var messageViewer = CardService.newTextParagraph()
.setText(draft.getMessage().getBody());
var sendButton = CardService.newTextButton()
.setText('Send')
.setOnClickAction(CardService.newAction()
.setFunctionName('sendMessage')
.setParameters({'draftId': draft.getId()})
);
var editButton = CardService.newTextButton()
.setText('Edit')
.setOnClickAction(CardService.newAction()
.setFunctionName('editMessage')
.setParameters({'draftId': draft.getId()})
);
var buttonSet = CardService.newButtonSet()
.addButton(sendButton)
.addButton(editButton);
section.addWidget(messageViewer);
section.addWidget(buttonSet)
return CardService.newCardBuilder()
.setHeader(header)
.addSection(section)
.build();
}
}
function sendMessage(e) {
GmailApp.getDraft(e.parameters.draftId).send();
return CardService.newActionResponseBuilder().setNavigation(
CardService.newNavigation()
.popToRoot()
.updateCard(buildDraftCard(getNextDraft()))
).build();
}
function editMessage(e) {
var messageId = GmailApp.getDraft(e.parameters.draftId).getMessageId();
var link = "https://mail.google.com/mail/#all/" + messageId;
return CardService.newActionResponseBuilder().setOpenLink(
CardService.newOpenLink()
.setUrl(link)
.setOnClose(CardService.OnClose.RELOAD_ADD_ON)
).build();
}
function getNextDraft() {
return GmailApp.getDrafts().pop()
}
appsscript.json配置如下:
{
"oauthScopes": [
"https://www.googleapis.com/auth/gmail.addons.execute",
"https://mail.google.com/"
],
"gmail": {
"name": "Gmail Add-on Draft Autoresponse UI",
"logoUrl": "https://www.gstatic.com/images/icons/material/system/1x/label_googblue_24dp.png",
"contextualTriggers": [{
"unconditional": {
},
"onTriggerFunction": "buildAddOn"
}],
"openLinkUrlPrefixes": [
"https://mail.google.com/"
],
"primaryColor": "#4285F4",
"secondaryColor": "#4285F4"
}
}
但是请记住,目前这些接口仍然有一些限制。当邮件打开时,它们只能显示 ,电子邮件的HTML格式可能看起来有些偏离。您可以按照this link找到有关如何测试和运行上述代码的更多信息。