Google apps script 从我的gmail插件撰写草稿电子邮件
我用这个例子来指导我编写代码,使用gmail插件中的用户输入值撰写独立的草稿电子邮件 下面是创建草稿的按钮小部件:Google apps script 从我的gmail插件撰写草稿电子邮件,google-apps-script,gmail-addons,Google Apps Script,Gmail Addons,我用这个例子来指导我编写代码,使用gmail插件中的用户输入值撰写独立的草稿电子邮件 下面是创建草稿的按钮小部件: var submitButton = CardService.newTextButton() .setTextButtonStyle(CardService.TextButtonStyle.FILLED) .setText('Create Draft') .setComposeAction( CardService.newAction().s
var submitButton = CardService.newTextButton()
.setTextButtonStyle(CardService.TextButtonStyle.FILLED)
.setText('Create Draft')
.setComposeAction(
CardService.newAction().setFunctionName("createEmailDraft"),
CardService.ComposedEmailType.STANDALONE_DRAFT
);
下面是回调:
function createEmailDraft(e) {
var recipient = e.formInput.recipient;
var subject = e.formInput.subject;
var body = e.formInput.body;
var draft = GmailApp.createDraft(recipient, subject, body);
return CardService.newComposeActionResponseBuilder()
.setGmailDraft(draft).build();
}
我不断遇到以下错误:
Access denied: : Missing access token for authorization. Request: MailboxService.CreateDraft.
我的范围似乎还可以(如果有的话,过于宽松):
我将非常感谢任何帮助克服这个错误 这个有点小,但您必须使用中的访问令牌来授权草稿创建:
function createEmailDraft(e) {
var accessToken = e.messageMetadata.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
var recipient = e.formInput.recipient;
var subject = e.formInput.subject;
var body = e.formInput.body;
var draft = GmailApp.createDraft(recipient, subject, body);
return CardService.newComposeActionResponseBuilder()
.setGmailDraft(draft).build();
}
谢谢你的建议,克里斯。我刚刚尝试添加这两行,但现在遇到了这样的错误:“TypeError:无法从undefined中读取属性“accessToken”。“我将”“添加到范围列表中,因为文档说它应该允许我访问messageMetadata。”。这也不起作用-e.messageMetadata仍然未定义。这是一篇旧文章,可能早就解决或忘记了,但使用以下方法对我来说很有效:
var accessToken=e.gmail.accessToken谢谢你,克里斯!
function createEmailDraft(e) {
var accessToken = e.messageMetadata.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
var recipient = e.formInput.recipient;
var subject = e.formInput.subject;
var body = e.formInput.body;
var draft = GmailApp.createDraft(recipient, subject, body);
return CardService.newComposeActionResponseBuilder()
.setGmailDraft(draft).build();
}