首页 > 解决方案 > 仅在 CSV 完全导入后开始计算

问题描述

我每晚都会生成一个 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 行之前,这一切正常。原因是一旦上传了几行,我的谷歌表格的计算就会开始发生。他们需要几分钟才能完成,然后上传继续并重新启动计算。

所以基本上,导入会不断地被计算中断,这使得导入脚本超过了最大执行时间。

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

任何关于如何完全上传 csv 的想法将不胜感激。

标签: google-apps-scriptgoogle-sheetsgoogle-sheets-formula

解决方案


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


推荐阅读