背景:
适用于 Gmail 的 Google Workspace 插件允许在 contextualTrigger 上访问 API 中当前打开的电子邮件,范围为:
https://www.googleapis.com/auth/gmail.addons.current.message.readonly
必须使用访问令牌传递访问令牌GmailApp.setCurrentMessageAccessToken(accessToken)
才能授予对当前打开的电子邮件的访问权限:
var accessToken = e.gmail.accessToken;
var messageId = e.gmail.messageId;
// The following function enables short-lived access to the current
// message in Gmail. Access to other Gmail messages or data isn't
// permitted.
GmailApp.setCurrentMessageAccessToken(accessToken);
var mailMessage = GmailApp.getMessageById(messageId);
从上面的文档:
setCurrentMessageAccessToken(accessToken)
设置使脚本能够访问当前属性的当前消息访问令牌。
GmailMessage
只有使用 Gmail当前邮件范围的 Gmail 插件项目需要此方法。
不幸的是,访问令牌和当前消息范围页面的链接目前都已损坏并导致 404 页,因此我无法从此处找到更多信息。
问题:
如何直接使用 Gmail API 而不是使用 Gmail API 来实现相同的功能GmailApp
?
Gmail的文档:users.messages.get声明这是调用此方法的有效范围,但是, Gmail APIhttps://www.googleapis.com/auth/gmail.addons.current.message.readonly
似乎没有等效的范围。GmailApp.setCurrentMessageAccessToken(accessToken)
不起作用的事情:
- 使用
ScriptApp.getOAuthToken()
- 根据本文档,“启用 Gmail 范围的访问令牌与返回的访问令牌不同ScriptApp.getOAuthToken()
。您必须使用操作事件对象中提供的令牌。” - 将事件对象中的访问令牌作为
Authorization: Bearer
标头中的令牌提供也会引发 403 错误。
搜索到的功能类似于:
var accessToken = e.gmail.accessToken
var messageId = e.gmail.messageId
Gmail.setCurrentMessageAccessToken(accessToken) // made up method
var mailMessage = Gmail.Users.Messages.get("me", messageId)