仅在CSV完全导入后才开始计算

时间:2019-01-22 19:49:29

标签: google-apps-script google-sheets google-sheets-formula

我每天晚上都会从另一个系统下载一个CSV文件。我每天都需要将此CSV导入Google表格中。我的Google表格会获取CSV数据,并对数据进行许多不同的计算,以生成最终数据集。

如下所示,我能够通过使用将CSV数据上传到Google表格中的功能来完成所有这些工作:

 function importCSVFromGoogleDrive() {

 var file = DriveApp.getFilesByName("DualCreditExport.csv").next();
 var csvData = Utilities.parseCsv(file.getBlob().getDataAsString());
 var sheet = SpreadsheetApp.getActive().getSheetByName('CURRENT');
 sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);

}

在我的CSV文件超过3500行之前,它一直工作良好。原因是,一旦上传了几行,我的Google工作表的计算就开始发生。他们需要几分钟来运行,然后继续上传,然后重新开始计算。

因此,基本上,导入会不断被计算中断,从而使导入脚本超过了最大执行时间。

但是,导入脚本只需要15秒即可运行。计算大约需要5分钟才能运行。因此,如果我能够完成导入,然后运行计算,就可以了。

任何有关如何完全上传csv的想法都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

避免立即重新计算的一种方法是使用独立脚本项目或绑定到其他电子表格的项目,并以SpreadsheetApp.openById(id)SpreadsheetApp.openByUrl(url)代替Spreadsheet.getActive();的方式使用,在导入脚本执行期间,用户未打开目标电子表格。这是因为除了重新计算任务所需的计算之外,在打开电子表格和服务的客户端之间还有同步任务,并且没有其他方法可以暂停/停止重新计算。