Google App脚本-将最新文件导入Google表格

时间:2019-07-29 16:34:55

标签: google-apps-script

我有以下代码可以读取Gmail标签中附加的文件

function importCSVGMAIL() {
  //gets first(latest) message with set label
  var threads = GmailApp.getUserLabelByName('Incremental Sales').getThreads(0,1);     
  var message = threads[0].getMessages()[0];
  var attachment = message.getAttachments()[0];

  // Is the attachment a CSV file
    var ss = SpreadsheetApp.getActive();
    var sh = ss.getSheetByName("CALLER");
    //parses content of csv to array
  attachment.setContentTypeFromExtension();  
  if (attachment.getContentType() === "text/csv") {
        var sheet = SpreadsheetApp.getActiveSheet();
        var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");
    // Remember to clear the content of the sheet before importing new data
    sh.clearContents().clearFormats();                                         
    //pastes array to sheet
    sh.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
  }
}

现在的问题是,当我们的内部服务器将数据发送到Gmail时(对此我有计划的报告),收件箱中的标签会以最早-最新的顺序显示这些文件。 然后,此代码将解析收件箱中的第一项(最旧的..不是最新的!)

是否可以通过更改下面的代码来调用“最新”文件?

2 个答案:

答案 0 :(得分:2)

以下索引提示可能会有所帮助:

// gets first(latest) message with set label
var threads = GmailApp.getUserLabelByName('SOME LABEL').getThreads();

// Use length of the object to index last item
var first_thread = threads[0].getMessages()
var last_thread = threads[threads.length-1].getMessages();

// Only use last thread:
var last_thread_last_message = last_thread[last_thread.length-1]
var attachment = last_thread_last_message.getAttachments()[0];

答案 1 :(得分:2)

就像Yaakov所说的...如果您正在寻找最新的线程,则可能要获取多个线程:

// Replace this
  var threads = GmailApp.getUserLabelByName('Incremental Sales').getThreads(0,1);

// With this
  var threads = GmailApp.getUserLabelByName('Incremental Sales').getThreads();