如何通过电子邮件在谷歌电子表格中添加一行?

时间:2016-01-14 22:52:25

标签: email google-apps-script automation google-sheets

我需要一个谷歌应用程序脚本,它可以执行以下操作: 如果我发送电子邮件到我的别名电子邮件,请发送电子邮件至myemail+expenses@gmail.com,它会在特定的Google电子表格中添加一行,其中包含该电子邮件中的数据。例如。时间戳,主题,身体的第一行 - 无论如何。

我发现有趣的文章描述了sending data to google spreadsheet的类似过程。

可能没有任何直接的方法,但是,它应该存在一些解决方法。

P.S。它应该只使用谷歌回声系统。没有php,服务器等。

1 个答案:

答案 0 :(得分:2)

这有两个步骤。

#1

首先创建一个触发器来运行邮件检查程序。

function switchTrigger() {
    var isExist = false;
    var triggers = ScriptApp.getProjectTriggers();
    for (var i = 0; i < triggers.length; i++) {
        if ( /*<CONDITION>*/ ) {
            isExist = true;
            ScriptApp.deleteTrigger(triggers[i]);
        }
    }
    if (!isExist) {
        ScriptApp.newTrigger( /*<CONDITION>*/ ).create();
        Logger.log('create');
    }
}

#2

然后你必须检查电子邮件。像这样的东西

function checkMail() {
    var sh = SpreadsheetApp.openById(properties.targetSheetId).getSheets()[0];
    var query = /* properties.queryString */ ;
    var threads = GmailApp.search(query);
    if (threads.length < 1) return;
    for (var i = 0; i < threads.length; i++) {
        var messages = threads[i].getMessages();
        for (var j = 0; j < messages.length; j++) {
            if (messages[j].isStarred()) {
                sh.appendRow([
                    new Date(),
                    messages[j].getFrom(),
                    messages[j].getPlainBody()
                ]);
                messages[j].unstar();
            }
        }
    }
}

小心。您必须设置Gmail过滤器,以便所有传入myemail+expenses@gmail.com的广告都会在开头标记为星标。

Working Example