0

我正在寻找如何在执行此脚本后标记已阅读的消息。我已经阅读了Class GmailApp,但我太新手了,不知道该怎么做。

如果该脚本根据搜索条件将电子邮件数据提取到谷歌表格中,然后将这些消息标记为已读,那么该脚本对我来说将是成功的。目前,它只会将电子邮件拉入谷歌表格。

感谢您的时间。

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);
    }
}
4

3 回答 3

1

假设该功能可以正常工作。这应该将消息标记为已读。

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;
}
于 2017-07-22T16:44:52.240 回答
0

这是产生错误的更新代码。

TypeError:无法从未定义中读取属性“长度”。(第 21 行,文件“GetEmailRecieved”)

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;
}
于 2017-07-24T13:09:04.413 回答
0

The reason for the length error is that array2d is zero. The appendData_ function fails.

The array2d contents need to be evaluated before the appendData_ function is executed in an if() statement.

I do not know yet how that will look

于 2018-08-22T19:36:06.860 回答