Список всех деталей истории Gmail - PullRequest
0 голосов
/ 18 июня 2020
function history(){
  var newResponse = Gmail.Users.History.list('email ID / 'me'');
  console.log(newResponse);

 for(var i = 0; i< newResponse.history.length; i++){
   var label = newResponse.history[i];
   console.log(JSON.stringify(label));
 }
}

ЦЕЛЬ Я пытался составить список всей моей истории, используя указанную выше функцию, но она не работает. Я пытался найти способ сделать эту работу, но продолжаю получать одну и ту же ошибку снова и снова: "GoogleJsonResponseException: API call to gmail.users.history.list failed with error: Missing/invalid parameter: startHistoryId (line 13, file "GMailAPI")"

Надеюсь, мой вопрос понятен.

1 Ответ

0 голосов
/ 18 июня 2020

Я считаю, что ваша цель следующая.

  • Вы хотите получить значение из метода «Users.history: list» в Gmail API с помощью скрипта Google Apps.

Как насчет этого ответа?

Пункты модификации:

  • В вашем случае необходимо включить startHistoryId в запрос Gmail.Users.History.list. В официальном документе startHistoryId является «Обязательным».
    • Я думаю, что причина вашей проблемы в этом.
  • Чтобы получить startHistoryId, используйте метод «Users: getProfile» в Gmail API.

Когда указанные выше точки отражаются в вашем скрипте, он становится следующим.

Использование:

Чтобы получить значения из Gmail.Users.History.list, запустите следующий поток.

  1. Запустите функцию getStartHistoryId().
    • Таким образом, startHistoryId сохраняется в PropertiesService.
  2. Например, в качестве примера отправьте образец электронного письма на Gmail с помощью браузера.
  3. Пожалуйста, запустите функцию 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. Ссылка

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...