Я сделал два небольших изменения в вашем коде. После тестирования он работает так, как вы просили.
Первый находится в строке var threads = GmailApp.search('in:inbox newer_than:4d ' + searchForLabels[l]);
. Я использовал итератор l
в массиве searchForLabels
. Я использовал его, потому что, читая контекст строки, это кажется уместным. Это изменение будет перебирать теги. Прости меня, если это не было твоим первоначальным намерением.
Второе изменение требуется для работы скрипта. Я закомментировал if (searchForLabels == 'has:nouserlabels') {
, потому что он никогда не будет true
, если массив searchForLabels
имеет более одного элемента. Это ошибка, которую вы обнаружили. Обратите внимание, как также комментируется корреспондент }
.
Это окончательная и рабочая версия скрипта:
function searchLabels() {
//if there is more than one entry here, the script does not work
var searchForLabels = [
'has:nouserlabels',
'label:Test1'
];
for (var l = 0; l < searchForLabels.length; l++) {
var threads = GmailApp.search('in:inbox newer_than:4d ' + searchForLabels[l]);
var msgs = GmailApp.getMessagesForThreads(threads);
Logger.log(searchForLabels)
//if (searchForLabels == 'has:nouserlabels') {
for (var i = 0; i < msgs.length; i++) {
for (var j = 0; j < msgs[i].length; j++) {
var message = msgs[i][j];
var from = message.getFrom();
var subject = message.getSubject();
var getAttachments = message.getAttachments();
var body = message.getPlainBody();
var getTo = message.getTo();
Logger.log(subject)
for (var k = 0; k < getAttachments.length; k++) {
var attachment = getAttachments[k];
var content = attachment.getContentType();
//rest of my code
}
}
}
//}
}
}
Я хочу добавить, что вы можете использовать Gmail API в скрипте приложений, чтобы выполнить ваш запрос простым способом. В частности, вы можете использовать Users.messages LIST , чтобы получить список всех писем с выбранными вами тегами. Там вы можете увидеть пример (нажмите на JavaScript
), где функция готова выполнить поиск. Чтобы включить этот API, вы должны следовать руководству по активации расширенных услуг . Не стесняйтесь обращаться за дополнительными разъяснениями или любыми вопросами.