我有以下代码可以读取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时(对此我有计划的报告),收件箱中的标签会以最早-最新的顺序显示这些文件。 然后,此代码将解析收件箱中的第一项(最旧的..不是最新的!)
是否可以通过更改下面的代码来调用“最新”文件?
答案 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();