【问题标题】:Coping CSV file from Gmail Attachment by name按名称从 Gmail 附件处理 CSV 文件
【发布时间】:2021-12-27 20:12:07
【问题描述】:

我只想将 CSV 附件从电子邮件复制到 Google 表格。 电子邮件有多个附件,文件格式不同。 我要复制的附件在 csv 格式中始终具有相同的名称。 我正在使用此代码,但它没有拉出我想复制到谷歌表的附件。 有人可以帮我解决这个问题吗?

function getCSV() {

 var myLabel = GmailApp.getUserLabelByName("I-Data New"); // specify label in gmail
 var threads = myLabel.getThreads(0,1);
 var msgs = GmailApp.getMessagesForThreads(threads);
 var attachments = msgs[0][0].getAttachments();

 var csv =  attachments[0].getDataAsString();
 var data = Utilities.parseCsv(csv);

var a = data.length ;
var b = data[0].length; 

var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = SpreadsheetApp.openById('12ApSC0WVn1sZxb9VF6_CZR9L5xuGY5WHMLyyGMc').getSheetByName('IData');
  sheet.getRange('A2:AM6026').clearContent();
  var range = sheet.getRange(2,1, data.length,data[0].length);
range.setValues(data);

}

【问题讨论】:

    标签: google-apps-script google-sheets gmail


    【解决方案1】:

    遍历附件并获取文件名。快速编辑现有代码:

    function getCSV() {
    
      var myLabel = GmailApp.getUserLabelByName("I-Data New"); // specify label in gmail
      var threads = myLabel.getThreads(0, 1);
      var msgs = GmailApp.getMessagesForThreads(threads);
      var attachments = msgs[0][0].getAttachments();
    
      attachments.forEach(att => {
        const name = att.getName()
        if (name == "myFileName.csv") {
          var data = Utilities.parseCsv(att.getDataAsString());
    
          var sheet = SpreadsheetApp.openById('12ApSC0WVn1sZxb9VF6_CZR9L5xuGY5WHMLyyGMc').getSheetByName('IData');
          sheet.getRange('A2:AM6026').clearContent();
          var range = sheet.getRange(2, 1, data.length, data[0].length);
          range.setValues(data);
        }
      })
    }
    

    【讨论】:

    • 谢谢你,完美的作品。
    • @RogerWareham 很高兴听到。请接受答案,以便将此主题标记为已解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多