我真的需要帮助。这是一种情况。每个星期一,我的Gmail Accout都会收到一个.csv文件。通常,它是> 3k行,并且基本上包含数字数据。
到目前为止,我正在下载此.csv文件并将其复制/粘贴到Google表格中。现在,我要自动执行此任务。
我已经搜索了互联网,并找到了用于Google表格的漂亮脚本:
function getCSV() {
// Abrir a planhilha e limpar ela
var sheetID = SpreadsheetApp.getActiveSpreadsheet().getId();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.openById(sheetID);
var first = ss.getSheetByName("Agrupados_por_plano");
first.clearContents();
//
var myLabel = GmailApp.getUserLabelByName("Pulse MetaBase"); // specify label in gmail
var threads = myLabel.getThreads(0,1);
var msgs = GmailApp.getMessagesForThreads(threads);
var attachments = msgs[0][0].getAttachments();
//var content = attachments.getContentType();
Logger.log(attachments[0].getSize());
//
var csv = attachments[0].getBlob().getDataAsString();
var data = Utilities.parseCsv(csv);
var a = data.length ;
var b = data[0].length;
var range = first.getRange(1,1,data.length,data[0].length);
range.setValues(data);
}
该脚本确实运行良好,并且没有错误。但是它仅导入前2000行数据。例如,我有一个包含2780行和5列的文件。我仅使用脚本导入2000行和5列,原始文件大小(250 KB)减小为192 KB。
我该如何解决?它是getAttachment()方法的限制吗?
答案 0 :(得分:0)
我发现了问题所在。这就是关注您正在处理的代码。我的脚本一遍又一遍地得到相同的消息,并且该特定消息包含带有完全2000行数据的.csv附加消息。那我怎么办?只需添加几行代码,即可在每次触发脚本时获取线程中的最后一条消息。
function getThreadsGmail()
{
// pegar o último email do thread e retornar arquivo anexo
var myLabel = GmailApp.getUserLabelByName("Meta_Base_Reports"); // especificar lable em Gmail
var threads = myLabel.getThreads();
var msgs = threads[0].getMessages();
var lastMsg = msgs[msgs.length - 1]; // get the last message in the thread
var attachments = lastMsg.getAttachments();
return attachments;
}
谢谢你们! =)