В аддонах Gmail как получить доступ ко всем деталям потоков, возвращаемым GmailApp.search? - PullRequest
0 голосов
/ 22 января 2019

Следующим методом я получаю сообщение об ошибке:

"Отсутствует токен доступа для авторизации. Запрос: 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/

Должен быть способ доступа к результатам GmailApp.search в аддонах Gmail. Как это сделать ?

1 Ответ

0 голосов
/ 26 марта 2019

Вам нужно будет добавить

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

к областям в вашем манифесте.

Что может быть неочевидным, так это то, что вам нужно УДАЛИТЬ

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

из манифеста. Похоже, что среда сценариев приложений выбирает наиболее ограниченный набор разрешений из доступных областей: если у вас есть обе области в манифесте, вы получите только разрешение current.message.readonly (и вы не сможете взаимодействовать с любым другие сообщения).

Я также обнаружил, что мне нужно полностью удалить аддон, а затем переустановить его, чтобы новые области действия вступили в силу.

...