Я пытаюсь получить список электронных писем, содержащих вложения, я получаю список сообщений, каждое сообщение содержит 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); });
}
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.
Чтобы получить только сообщения, содержащие вложение, следует использовать метод 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
.
Чтобы было понятнее опишу процесс пошагово:
- Вы запускаете вышеуказанный
users.messages.list
и получить несколькоid
взамен. - Для каждого
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); });
}
- Шаг выше вернет объект
Message
с несколькимиMessagePart
внутри. Поскольку вас интересуют только вложенияMessagePart
, вам необходимо взаимодействовать с каждым из них, проверяя, не пусто ли полеfilename
(поскольку только вложенияMessagePart
имеют заполненныйfilename
поле). Имейте в виду, что на каждое вложение в электронном письме приходится одинMessagePart
. - Теперь вы определили, какие
MessagePart
содержат информацию о вложении. Наконец, вам нужно только проверить свойствоbody
этогоMessagePart
и прочитать полеattachmentId
внутри.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.