Google app engine 谷歌应用脚本/Gmail插件:如何在Gmail上显示带有文本和按钮的窗口?

Google app engine 谷歌应用脚本/Gmail插件:如何在Gmail上显示带有文本和按钮的窗口?,google-app-engine,google-apps-script,gmail-api,google-apps,gmail-addons,Google App Engine,Google Apps Script,Gmail Api,Google Apps,Gmail Addons,我制作了一个谷歌应用程序脚本来自动回复我的电子邮件(一种聪明的电子邮件机器人助手)。尽管如此,我还是想在发送之前检查机器人做出的每个回答 所以我想在Gmail上有一个窗口,显示用户的电子邮件和机器人的答案,还有两个按钮“发送”“跳过”。通过这种方式,我可以检查机器人准备的答案,然后发送或跳过它(或者可能编辑它) 如何通过谷歌应用程序脚本在GMail上显示包含文本、编辑文本和按钮的窗口 谢谢 问候。您必须检查Gmail附加组件: 首先,您可以查看Google的codelab,它将在5分钟内为您提供

我制作了一个谷歌应用程序脚本来自动回复我的电子邮件(一种聪明的电子邮件机器人助手)。尽管如此,我还是想在发送之前检查机器人做出的每个回答

所以我想在Gmail上有一个窗口,显示用户的电子邮件和机器人的答案,还有两个按钮“发送”“跳过”。通过这种方式,我可以检查机器人准备的答案,然后发送或跳过它(或者可能编辑它)

如何通过谷歌应用程序脚本在GMail上显示包含文本、编辑文本和按钮的窗口

谢谢


问候。

您必须检查Gmail附加组件:

首先,您可以查看Google的codelab,它将在5分钟内为您提供设置第一个附加组件的代码,然后您可以根据自己的需要进行调整:


Stéphane

一个简单的解决方案是让机器人将电子邮件保存为“草稿”。这样,您可以在手动发送电子邮件之前轻松地检查电子邮件

如果您仍然对创建gmail附加组件感兴趣(可以显示原始电子邮件、回复以及发送或编辑按钮),那么您可能对构建gmail附加组件感兴趣。这些将显示在Gmail web客户端的右侧,如下所示:

用于显示此类界面的代码(有两个按钮,一个自动发送电子邮件,另一个打开编辑器)如下所示:

函数buildAddOn(e){
//激活临时Gmail附加作用域。
var accessToken=e.messageMetadata.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
返回buildDraftCard(getNextDraft());
}
功能构建DraftCard(草稿){
如果(!草稿){
var header=CardService.newCardHeader().setTitle('此处无内容');
返回CardService.newCardBuilder().setHeader(header.build();
}否则{
var header=CardService.newCardHeader()
.setTitle(draft.getMessage().getSubject());
var section=CardService.newCardSection();
var messageViewer=CardService.newtextpragement()
.setText(draft.getMessage().getBody());
var sendButton=CardService.newTextButton()
.setText('Send')
.setOnClickAction(CardService.newAction()
.setFunctionName('sendMessage')
.setParameters({'draftId':draft.getId()})
);
var editButton=CardService.newTextButton()
.setText(“编辑”)
.setOnClickAction(CardService.newAction()
.setFunctionName('editMessage')
.setParameters({'draftId':draft.getId()})
);
var buttonSet=CardService.newButtonSet()
.addButton(发送按钮)
.addButton(编辑按钮);
section.addWidget(messageViewer);
section.addWidget(按钮集)
return CardService.newCardBuilder()
.setHeader(标题)
.addSection(section)
.build();
}
}
函数sendMessage(e){
getDraft(e.parameters.draftId.send();
return CardService.newActionResponseBuilder().setNavigation(
CardService.newNavigation()
.poptroot()
.updateCard(buildDraftCard(getNextDraft()))
).build();
}
功能编辑消息(e){
var messageId=GmailApp.getDraft(e.parameters.draftId.getMessageId();
变量链接=”https://mail.google.com/mail/#all/“+messageId;
return CardService.newActionResponseBuilder().setOpenLink(
CardService.newOpenLink()
.setUrl(链接)
.setOnClose(CardService.OnClose.RELOAD\u加载项)
).build();
}
函数getNextDraft(){
返回GmailApp.getDrafts().pop()
}
appsscript.json的配置如下所示:

{
“oauthScopes”:[
"https://www.googleapis.com/auth/gmail.addons.execute",        
"https://mail.google.com/"
],
“gmail”:{
“名称”:“Gmail加载项草稿自动响应UI”,
“logoUrl”:”https://www.gstatic.com/images/icons/material/system/1x/label_googblue_24dp.png",
“上下文装配工”:[{
“无条件”:{
},
“OnTiggerFunction”:“buildAddOn”
}],
“openLinkUrlPrefixes”:[
"https://mail.google.com/"
],
“原色”:“4285F4”,
“第二种颜色”:“4285F4”
}
}

但是,请记住,这些接口目前仍有一些局限性。它们只能在打开邮件时显示,并且电子邮件的HTML格式可能看起来有点不合适。您可以通过以下方式找到有关如何测试和运行上述代码的更多信息。

非常感谢。事实上,将电子邮件保存在草稿中可能是一个很好的解决方案。除了将它们添加到草稿中,您还可以为它们添加标签。然后,在其他可能的草案中更容易识别它们。