Я считаю, что ваша цель следующая.
- Вы хотите получить значение из метода «Users.history: list» в Gmail API с помощью скрипта Google Apps.
Как насчет этого ответа?
Пункты модификации:
- В вашем случае необходимо включить
startHistoryId
в запрос Gmail.Users.History.list
. В официальном документе startHistoryId
является «Обязательным». - Я думаю, что причина вашей проблемы в этом.
- Чтобы получить
startHistoryId
, используйте метод «Users: getProfile» в Gmail API.
Когда указанные выше точки отражаются в вашем скрипте, он становится следующим.
Использование:
Чтобы получить значения из Gmail.Users.History.list
, запустите следующий поток.
- Запустите функцию
getStartHistoryId()
. - Таким образом,
startHistoryId
сохраняется в PropertiesService.
- Например, в качестве примера отправьте образец электронного письма на Gmail с помощью браузера.
- Пожалуйста, запустите функцию
history()
. - Таким образом, вы можете получить значения из
Gmail.Users.History.list
.
Когда history()
запускается сразу после запуска getStartHistoryId()
, значений нет возвращаются из Gmail.Users.History.list
. Пожалуйста, будьте осторожны. Официальный документ startHistoryId
выглядит следующим образом.
startHistoryId: Обязательно. Возвращает записи истории после указанного startHistoryId. Предоставленный startHistoryId должен быть получен из historyId сообщения, потока или предыдущего ответа списка. Идентификаторы истории увеличиваются в хронологическом порядке, но не прилегают к случайным промежуткам между действительными идентификаторами. Предоставление недопустимого или устаревшего startHistoryId обычно возвращает код ошибки HTTP 404. HistoryId обычно действителен не менее недели, но в некоторых редких случаях может быть действителен всего несколько часов. Если вы получили ответ об ошибке HTTP 404, ваше приложение должно выполнить полную синхронизацию c. Если вы не получили в ответе nextPageToken, значит, обновлений для получения нет, и вы можете сохранить возвращенный historyId для будущего запроса.
Измененный скрипт:
// Added: At first, please run this function and save the startHistoryId to the PropertiesService.
function getStartHistoryId() {
var startHistoryId = Gmail.Users.getProfile('me').historyId;
PropertiesService.getScriptProperties().setProperty("startHistoryId", startHistoryId);
}
// Modified: As the next step, please run this function.
function history() {
var startHistoryId = PropertiesService.getScriptProperties().getProperty("startHistoryId");
var newResponse = Gmail.Users.History.list('me', {startHistoryId: Number(startHistoryId)});
if ("history" in newResponse) {
for(var i = 0; i< newResponse.history.length; i++){
var label = newResponse.history[i];
console.log(JSON.stringify(label));
}
}
}
- В своей среде я могу подтвердить, что
{startHistoryId: startHistoryId}
также можно использовать.
Примечание:
- Этот измененный сценарий предполагает, что Gmail API уже был включен в Advanced Сервисы Google. Ссылка
Ссылки: