Что нужно добавить в этот скрипт Google, чтобы пометить письма как прочитанные

Я смотрю, как пометить сообщения, прочитанные после выполнения этого скрипта. Я прочитал GmailApp класса, но я слишком много новичков, чтобы знать, что делать.

Этот сценарий был бы успешным для меня, если бы он вытащил данные электронной почты на листы Google на основе критериев поиска, а затем пометил эти сообщения как прочитанные. В настоящее время, это только потянет электронные письма в листы Google.

Спасибо за ваше время.

var SEARCH_QUERY = "label:aggieworks is:unread to:me subject:*WO:*";

// Credit: https://gist.github.com/oshliaer/70e04a67f1f5fd96a708

function getEmails_(q) {
    var emails = [];
    var threads = GmailApp.search(q);
    for (var i in threads) {
        var msgs = threads[i].getMessages();
        for (var j in msgs) {
            emails.push([msgs[j].getBody().replace(/<.*?>/g, '\n')
                .replace(/^\s*\n/gm, '').replace(/^\s*/gm, '').replace(/\s*\n/gm, '\n')
            ]);
        }
    }
    return emails;
}

function appendData_(sheet, array2d) {
    sheet.getRange(sheet.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d);
}

function saveEmails() {
    var array2d = getEmails_(SEARCH_QUERY);
    if (array2d) {
        appendData_(SpreadsheetApp.getActiveSheet(), array2d);
    }
}

3 ответа

Предполагая, что функция работает так, как у вас есть. Это должно пометить сообщения как прочитанные.

function getEmails_(q) 
{
    var emails = [];
    var threads = GmailApp.search(q);
    for (var i in threads) {
        var msgs = threads[i].getMessages();
        for (var j in msgs) 
        {
            emails.push([msgs[j].getBody().replace(/<.*?>/g, '\n')
                .replace(/^\s*\n/gm, '').replace(/^\s*/gm, '').replace(/\s*\n/gm, '\n')]);
            msgs[j].markRead();   
        }
    }
    return emails;
}

Причина ошибки длины в том, что array2d это ноль. appendData_ Функция не работает.

array2d содержимое должно быть оценено до appendData_ функция выполняется в if() заявление.

Пока не знаю как это будет выглядеть

Вот обновленный код, который выдает ошибку.

Ошибка типа: невозможно прочитать свойство "длина" из неопределенного. (строка 21, файл "GetEmailReceve")

var SEARCH_QUERY = "label:aggieworks is:unread";

// Credit: https://gist.github.com/oshliaer/70e04a67f1f5fd96a708


function getEmails_(q) {
    var emails = [];
    var threads = GmailApp.search(q);
    for (var i in threads) {
        var msgs = threads[i].getMessages();
        for (var j in msgs) {
            emails.push([msgs[j].getBody().replace(/<.*?>/g, '\n')
                .replace(/^\s*\n/gm, '').replace(/^\s*/gm, '').replace(/\s*\n/gm, '\n')
            ]);
        }
    }
    return emails;
}

function appendData_(sheet, array2d) {
    sheet.getRange(sheet.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d);
}

function saveEmails() {
    var array2d = getEmails_(SEARCH_QUERY);
    if (array2d) {
        appendData_(SpreadsheetApp.getActiveSheet(), array2d);
    }
}

function getEmails_(q) 
{
    var emails = [];
    var threads = GmailApp.search(q);
    for (var i in threads) {
        var msgs = threads[i].getMessages();
        for (var j in msgs) 
        {
            emails.push([msgs[j].getBody().replace(/<.*?>/g, '\n')
                .replace(/^\s*\n/gm, '').replace(/^\s*/gm, '').replace(/\s*\n/gm, '\n')]);
            msgs[j].markRead();   
        }
    }
    return emails;
}
Другие вопросы по тегам