Google表格从csv导入选定的列

时间:2019-01-25 11:54:06

标签: google-apps-script google-sheets

我正在尝试仅从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的某些列,则应使其更快一些?

1 个答案:

答案 0 :(得分:0)

最有可能花费大量时间写到工作表上。我用自己的CSV文件设置了一个简单的测试,该文件有50,000行和32列,每个单元格包含8个字符串。不到50mb(DriveApp打开文件的限制)。

打开和解析文件需要12秒钟。打开,解析和写入工作表需要200秒。仅提取必要的4列并写入工作表只花了34秒,因此限制您写的内容绝对是提高性能的一种方法。

由于DriveApp的文件大小限制,我无法创建超出最大执行时间的情况,但这似乎是解决问题的一种好方法:Exceeded Max Execution Time in Google Apps Script