Функция сценария Gmail Apps для отображения содержимого всех черновиков сообщений

Я ищу сценарий Google Apps для Gmail, который отображал бы содержимое самого последнего черновика сообщения. Пока мой код:

function listDrafts() {
  var drafts = Gmail.Users.Drafts.list('me')
  if (drafts.drafts.length == 0) {
    Logger.log('No draft messages found.');
  } else {
    Logger.log('Drafts:');
    for (var i = 0; i < drafts.drafts.length; i++) {
      var draft = drafts.drafts[i].message.payload.headers[i].value;
      Logger.log('- %s', draft);
    }
  }
}

Однако при запуске я получаю сообщение об ошибке. Ценю любую помощь.


person Sherif Kamal-ElDin    schedule 17.10.2019    source источник
comment
Какая у вас ошибка?   -  person showdev    schedule 18.10.2019


Ответы (1)


Из вашего скрипта, когда Gmail API включен в расширенных сервисах Google, я подумал, что ошибка может возникнуть в строке var draft = drafts.drafts[i].message.payload.headers[i].value;, потому что drafts.drafts[i].message.payload возвращает undefined. Если я правильно понимаю, как насчет следующей модификации?

Измененный скрипт:

Когда ваш скрипт изменен, как насчет следующей модификации?

From:
var draft = drafts.drafts[i].message.payload.headers[i].value;
To:
var draft = Gmail.Users.Drafts.get("me", drafts.drafts[i].id).message.payload.headers[i].value;

or

To:
var headers = Gmail.Users.Drafts.get("me", drafts.drafts[i].id).message.payload.headers;
for (var j = 0; j < headers.length; j++) {
  Logger.log(headers[j].value)
}

Примечание:

Использованная литература:

Если я неправильно понял ваш вопрос и это было не то направление, которое вам нужно, я прошу прощения.

Редактировать:

  • Вы хотите получить электронное письмо из заголовков Gmail.Users.Drafts.

В этой ситуации как насчет следующей модификации?

Измененный скрипт:

From:
var draft = drafts.drafts[i].message.payload.headers[i].value;
To:
var headers = Gmail.Users.Drafts.get("me", drafts.drafts[i].id).message.payload.headers;
for (var j = 0; j < headers.length; j++) {
  var search = ["From", "To"];
  if (search.indexOf(headers[j].name) != -1) {
    Logger.log(headers[j].value)
  }
}
  • Если вы хотите получить значения, кроме «От» и «Кому», измените var search = ["From", "To"];
person Tanaike    schedule 18.10.2019
comment
Привет, Танаике - Большое спасибо за твой ответ. Ваша модификация, похоже, теперь возвращает значение, однако кажется, что я искал адреса электронной почты, указанные в заголовке, но он возвращает только значение 1.0 - какие-либо идеи по этому поводу? - person Sherif Kamal-ElDin; 18.10.2019
comment
@Sherif Kamal-ElDin Спасибо за ответ. Я прошу прощения за доставленные неудобства. Я обновил свой ответ. Не могли бы вы это подтвердить? Если это не тот результат, которого вы хотите, я должен извиниться еще раз. - person Tanaike; 19.10.2019
comment
Привет Танаике - Ты, мой друг, настоящий MVP! теперь он работает отлично, как и предполагалось. Большое спасибо, сэр! - person Sherif Kamal-ElDin; 22.10.2019
comment
@Sherif Kamal-ElDin Спасибо за ответ. Я рад, что ваша проблема решена. - person Tanaike; 22.10.2019