在 Gmail Addons 中,如何访问 GmailApp.search 返回的所有线程的详细信息?

In Gmail Addons, how to get access to all threads' details returned by GmailApp.search?

使用以下方法,我得到错误:

"Missing access token for authorization. Request: MailboxService.GetThread"

var button [...] 行。

function createItemListCard() {
    var card = CardService.newCardBuilder().setHeader(CardService.newCardHeader().setTitle('Item list'));
    var section = CardService.newCardSection().setHeader("<b>Items</b>");
    var threads = GmailApp.search("some search query")
for (var i = 0; i < threads.length; i++) {
        var button = CardService.newTextButton().setText(threads[i].getFirstMessageSubject()).setOpenLink(CardService.newOpenLink().setUrl(threads[i].getPermalink()));
    }
    return card.build();
}

示例代码片段似乎在每条消息中使用访问令牌,例如:

var accessToken = e.messageMetadata.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);

但这根本没有帮助。很可能是由于访问所有线程而不仅仅是一条消息。 search 文档中提到的范围已经到位:https://mail.google.com/

必须有一种方法可以访问 Gmail 插件中 GmailApp.search 的结果。 怎么做?

您需要添加

https://www.googleapis.com/auth/gmail.readonly

到清单中的范围。

可能不明显的是您需要删除

https://www.googleapis.com/auth/gmail.addons.current.message.readonly

来自清单。应用程序脚本环境似乎从可用范围中选择了最严格的一组权限:如果清单中有两个范围,您将只会获得 current.message.readonly 权限(并且您将无法与任何其他消息)。

我还发现我需要完全卸载插件然后重新安装它才能使新范围生效。