问题 使用应用脚本将符合条件的电子邮件导入Google电子表格


我想知道是否有可能创建一个监控我的收件箱或gmail中某个标签的应用脚本,当收到电子邮件时,将其导入谷歌电子表格

两者中较简单的是导入所有在某个标签中捕获的电子邮件,这很容易在gmail本身使用过滤器完成,所以我认为这将是更容易的选择

如果有可能,有人可以将我链接到已经执行此操作的应用程序脚本或指向正确的方向开始吗?我有一些,尽管对应用程序脚本的经验很少,所以对我很容易:)


11770
2017-08-08 03:59


起源



答案:


这是一个小的代码开始,我确实将请求限制为前10个线程,使其缩短并使用了我有的标签...在测试之前不要忘记更改其名称;-)

    function getMessagesWithLabel() {
     var destArray = new Array();
      var threads = GmailApp.getUserLabelByName('Facebook').getThreads(1,10);

      for(var n in threads){
            var msg = threads[n].getMessages();
            var destArrayRow = new Array();
            destArrayRow.push('thread has '+threads[n].getMessageCount()+' messages');
              for(var m in msg){
                         destArrayRow.push(msg[m].getSubject());
               }
      destArray.push(destArrayRow);           
            }
    Logger.log(destArray);
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sh = ss.getActiveSheet();
    if(ss.getLastRow()==0){sh.getRange(1,1).setValue('getMessagesWithLabel() RESULTS')};
    sh.getRange(ss.getLastRow()+1,1,destArray.length,destArray[0].length).setValues(destArray)
    }

10
2017-11-22 09:14





是的,可以编写一个脚本来完成你所概述的内容。 见 GmailApp文档 用于执行此操作的方法的Apps脚本。


3
2017-08-08 05:46



感谢您的回复:)有人可以指导我通过导入标签x中的电子邮件的实际内容,以便我可以开始吗?当谈到这个东西时,我绝望了:(
您可以使用GmailApp.getInboxThreads(),然后使用GmailThread.getLabels()查看属于标签的所有邮件。话虽如此,Stackoverflow是一个寻找答案的论坛,当你被困住而不是现成的代码时。因此,当你遇到困难时,你一定要自己尝试并寻求帮助。 - Srik


答案:


这是一个小的代码开始,我确实将请求限制为前10个线程,使其缩短并使用了我有的标签...在测试之前不要忘记更改其名称;-)

    function getMessagesWithLabel() {
     var destArray = new Array();
      var threads = GmailApp.getUserLabelByName('Facebook').getThreads(1,10);

      for(var n in threads){
            var msg = threads[n].getMessages();
            var destArrayRow = new Array();
            destArrayRow.push('thread has '+threads[n].getMessageCount()+' messages');
              for(var m in msg){
                         destArrayRow.push(msg[m].getSubject());
               }
      destArray.push(destArrayRow);           
            }
    Logger.log(destArray);
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sh = ss.getActiveSheet();
    if(ss.getLastRow()==0){sh.getRange(1,1).setValue('getMessagesWithLabel() RESULTS')};
    sh.getRange(ss.getLastRow()+1,1,destArray.length,destArray[0].length).setValues(destArray)
    }

10
2017-11-22 09:14





是的,可以编写一个脚本来完成你所概述的内容。 见 GmailApp文档 用于执行此操作的方法的Apps脚本。


3
2017-08-08 05:46



感谢您的回复:)有人可以指导我通过导入标签x中的电子邮件的实际内容,以便我可以开始吗?当谈到这个东西时,我绝望了:(
您可以使用GmailApp.getInboxThreads(),然后使用GmailThread.getLabels()查看属于标签的所有邮件。话虽如此,Stackoverflow是一个寻找答案的论坛,当你被困住而不是现成的代码时。因此,当你遇到困难时,你一定要自己尝试并寻求帮助。 - Srik