Я пытаюсь получить список электронных писем, содержащих вложения, я получаю список сообщений, каждое сообщение содержит 2 свойства — id и threadID — я предположил, что, поскольку сообщения не содержат свойство AttachmentID, они не имеют один либо.

Я не нашел способ получить только сообщения с вложениями.

Это код:

function execute() {
    return gapi.client.gmail.users.messages.list({
        "userId": "myid@gmail.com",
        "includeSpamTrash": false,
        "maxResults": 100,
    }).then(function (response) {
                // Handle the results here (response.result has the parsed body).
                console.log("Response", response);
            },
            function (err) { console.error("Execute error", err); });
}
4
lolshimi11 26 Дек 2021 в 19:57

2 ответа

function execute() {
  return gapi.client.gmail.users.messages.list({
    "userId": "myid@gmail.com",
    "q": "has:attachment", // This right here
    "includeSpamTrash": false,
    "maxResults": 100,
  })
    .then(
      function (response) {
        // Handle the results here (response.result has the parsed body).
        console.log("Response", response);
      },
      function (err) {
        console.error("Execute error", err)
      }
    )
}

Параметр "q" имеет множество параметров, которые можно использовать для фильтрации вывода. Это также работает в пользовательском интерфейсе Gmail.

0
Shrihan Kumar Padhy 27 Дек 2021 в 12:05

Чтобы получить только сообщения, содержащие вложение, следует использовать метод users.messages.list при включении параметра q для отображения только сообщений с вложениями. Этот параметр q можно настроить с помощью строки has:attachment. В JavaScript этот запрос выглядит следующим образом:

  function execute() {
    return gapi.client.gmail.users.messages.list({
      "userId": "{ YOUR USERID HERE }",
      "q": "has:attachment"
    })
        .then(function(response) {
                console.log("Response", response);
              },
              function(err) { console.error("Execute error", err); });
  }

Не забудьте обновить параметр userId, чтобы он соответствовал вашему сценарию.

ОБНОВИТЬ

Читая ваш новый комментарий, я понимаю, что вашей конечной целью является получение поля attachmentId. Вы можете сделать это очень легко, просто расширив приведенный выше запрос. Вам нужно только помнить, что указанная выше функция возвращает сообщение id, которое можно использовать для получения Message объект, содержащий MessagePart внутри поля payload. Тот же объект MessagePart содержит MessagePartBody внутри поля body. Наконец, этот MessagePartBody содержит поле attachmentId.

Чтобы было понятнее опишу процесс пошагово:

  1. Вы запускаете вышеуказанный users.messages.list и получить несколько id взамен.
  2. Для каждого id вы запускаете функцию users.messages.get, чтобы получить объект Message. Эта функция может быть похожа на этот пример:
  function execute() {
    return gapi.client.gmail.users.messages.get({
      "userId": "{ YOUR USERID HERE }",
      "id": "{ THE MESSAGE ID HERE }"
    })
        .then(function(response) {
                console.log("Response", response);
              },
              function(err) { console.error("Execute error", err); });
  }
  1. Шаг выше вернет объект Message с несколькими MessagePart внутри. Поскольку вас интересуют только вложения MessagePart, вам необходимо взаимодействовать с каждым из них, проверяя, не пусто ли поле filename (поскольку только вложения MessagePart имеют заполненный filename поле). Имейте в виду, что на каждое вложение в электронном письме приходится один MessagePart.
  2. Теперь вы определили, какие MessagePart содержат информацию о вложении. Наконец, вам нужно только проверить свойство body этого MessagePart и прочитать поле attachmentId внутри.
0
Jacques-Guzel Heron 30 Дек 2021 в 12:08
Я сделал это, но он по-прежнему не получает свойство attachmentid, которое мне нужно для доступа к вложениям.
 – 
lolshimi11
28 Дек 2021 в 18:04
Привет @lolshimi11! Я расширил свой ответ на основе вашего комментария. Пожалуйста, посмотрите и дайте мне знать, если это поможет.
 – 
Jacques-Guzel Heron
30 Дек 2021 в 12:09