Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 将所有带有指定标签(在Gmail中)的电子邮件导出到驱动器文件夹中,并将pdf链接以及主题和正文导出到电子表格中_Google Apps Script_Google Sheets_Pdf Generation_Gmail Api - Fatal编程技术网

Google apps script 将所有带有指定标签(在Gmail中)的电子邮件导出到驱动器文件夹中,并将pdf链接以及主题和正文导出到电子表格中

Google apps script 将所有带有指定标签(在Gmail中)的电子邮件导出到驱动器文件夹中,并将pdf链接以及主题和正文导出到电子表格中,google-apps-script,google-sheets,pdf-generation,gmail-api,Google Apps Script,Google Sheets,Pdf Generation,Gmail Api,相对较新的谷歌脚本 我想做的是 选择Gmail标签中的所有指定电子邮件 将每封电子邮件另存为单独的pdf(使用主题)并保存在 google drive中的指定文件夹 生成指向该pdf的链接 保存在电子表格中 a) 日期 b) 主题 c) 普通正文 d) Html正文文本 e) 链接到每个pdf文件 以下代码正在生成点a到d function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s

相对较新的谷歌脚本

我想做的是

  • 选择Gmail标签中的所有指定电子邮件
  • 将每封电子邮件另存为单独的pdf(使用主题)并保存在 google drive中的指定文件夹
  • 生成指向该pdf的链接
  • 保存在电子表格中

    a) 日期

    b) 主题

    c) 普通正文

    d) Html正文文本

    e) 链接到每个pdf文件

  • 以下代码正在生成点a到d

        function myFunction() {
    
    
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName("Sheet1");
    
      var label = GmailApp.getUserLabelByName("MY LABEL");
      var threads = label.getThreads();
    
      for (var i=0; i<threads.length; i++)
      {
        var messages = threads[i].getMessages();
    
        for (var j=0; j<messages.length; j++)
        {
          var msghtml = messages[j].getBody();
          var msgplain = messages[j].getPlainBody();
          var sub = messages[j].getSubject();
          var dat = messages[j].getDate();
    
          ss.appendRow([dat,sub,msgplain,msghtml])
        }
          threads[i].removeLabel(label);
      }
    }
    
    函数myFunction(){
    var ss=SpreadsheetApp.getActiveSpreadsheet();
    var sheet=ss.getSheetByName(“Sheet1”);
    var label=GmailApp.getUserLabelByName(“我的标签”);
    var threads=label.getThreads();
    对于(var i=0;iYou可以通过添加/修改以下行来修改脚本:
    基本上,为了将您的电子邮件导出为PDF

    • 您需要先使用将其保存为文本文件
    • 您需要将其转换为PDF格式
    • 将其另存为新文件(这次是pdf)
    要获取链接,请使用。

    您可以通过添加/修改以下行来修改脚本: 基本上,为了将您的电子邮件导出为PDF

    • 您需要先使用将其保存为文本文件
    • 您需要将其转换为PDF格式
    • 将其另存为新文件(这次是pdf)

    要获取链接,请使用。

    您是否只对电子邮件正文或附件感兴趣?您是否只对电子邮件正文或附件感兴趣?我认为在OP的目标中,可能不需要将电子邮件创建为文本文件。那么修改
    var textFile=DriveApp.createFile如何('email-'+sub+'-'+dat,msghtml,“text/html”);var-blob=textFile.getAs(MimeType.PDF);
    to
    var-blob=Utilities.newBlob(msghtml,MimeType.html,'email-'+sub+'-'+dat).getAs(MimeType.PDF);
    ?通过这种方式,HTML可以转换为PDF格式,而无需创建文本文件。但是,如果这不是OP想要的方向,我很抱歉。谢谢你的建议@Tanaike,这是一个好主意,因为它节省了一步。我想OP的目标是,电子邮件可能不需要创建为文本文件。那么修改电子邮件怎么样
    var textFile=DriveApp.createFile('email-'+sub+'-'+dat,msghtml,“text/html”);var blob=textFile.getAs(MimeType.PDF);
    to
    var blob=Utilities.newBlob(msghtml,MimeType.html,'email-'+sub+'-'+dat).getAs(MimeType.PDF)
    ?这样,HTML可以转换为PDF格式,而无需创建文本文件。但是,如果这不是OP想要的方向,我很抱歉。谢谢您的建议@Tanaike,这是一个好主意,因为它节省了一步。
          var textFile=DriveApp.createFile('email-'+sub+'-'+dat, msghtml,"text/html"); //modify the file name as desired
          var blob = textFile.getAs(MimeType.PDF);
          var pdf= DriveApp.createFile(blob);
          var pdfLink=pdf.getUrl();
          ss.appendRow([dat,sub,msgplain,msghtml,pdfLink])