Как вы можете прочитать в документации , ресурс Users.threads
имеет следующую структуру:
{
"id": string,
"snippet": string,
"historyId": unsigned long,
"messages": [
users.messages Resource
]
}
Обратите внимание на свойство messages, как оно содержит список (или массив) из users.messages
.
В вашем коде:
var messages = threads[i].getMessages();
Вы сохраняете каждый из этих списков в messages
переменная каждый раз, когда l oop завершает цикл. Вот для чего i
представляет каждую позицию массива users.messages
. Вы можете прочитать больше о циклах здесь .
Проблема с вашим кодом заключается в том, что вы должны делать то же самое l oop, что вы делали с threads
, но с messages
, как в Gmail, каждый thread
может иметь несколько messages
, как я сказал в желтом поле выше :).
var content = messages[0].getPlainBody();
messages[0].markRead();
Причина, по которой вы получаете только первое сообщение от каждого потока, заключается в том, что вы получаете доступ только к индексной позиции 0
(которая в массиве , это первая позиция) messages.
Следовательно, вам нужно еще for
l oop для перебора всех сообщений каждого потока:
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++){ //You can't repeat i, so we use j, for example
var content = messages[j].getPlainBody();
messages[j].markRead();
// implement your own parsing rule inside
if (content) {
... etc
Кроме того, не забудьте добавить еще один }
чтобы закрыть l oop после Utilities.sleep
Надеюсь, это поможет! Не стесняйтесь задавать любые другие сомнения.