我正在尝试仅从Google表格中的CSV导入几列。我的CSV很大(26k行),我只需要导入32列中的4列。以下脚本(我在论坛中找到)用于将CSV导入GoogleSheet:
function importReport() {
var threads = GmailApp.search('label:stock_fastmag subject:"Rapport de commande - article detail - TOTAL"');
var message = threads[0].getMessages()[0];
var attachment = message.getAttachments()[0];
attachment.setContentType('text/csv');
// Is the attachment a CSV file
if (attachment.getContentType() === "text/csv") {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Reliquat_commandes_clients");
var csvData = Utilities.parseCsv(attachment.getDataAsString(), ";");
// Remember to clear the content of the sheet before importing new data
sheet.clearContents().clearFormats();
sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}
}
问题在于,由于脚本无法完全运行,因此授权执行时间太短。您是否认为如果我仅导入CSV的某些列,则应使其更快一些?
答案 0 :(得分:0)
最有可能花费大量时间写到工作表上。我用自己的CSV文件设置了一个简单的测试,该文件有50,000行和32列,每个单元格包含8个字符串。不到50mb(DriveApp打开文件的限制)。
打开和解析文件需要12秒钟。打开,解析和写入工作表需要200秒。仅提取必要的4列并写入工作表只花了34秒,因此限制您写的内容绝对是提高性能的一种方法。
由于DriveApp的文件大小限制,我无法创建超出最大执行时间的情况,但这似乎是解决问题的一种好方法:Exceeded Max Execution Time in Google Apps Script。