Google apps script 仅在CSV完全导入后开始计算
我每天晚上都会从不同的系统下载一个CSV文件。我需要每天将这个CSV导入谷歌表单。我的Google Sheets获取CSV数据,并对数据进行许多不同的计算,以生成最终的数据集 我能够通过使用一个功能将CSV数据上传到谷歌表单中来完成所有这些工作,如下所示:Google apps script 仅在CSV完全导入后开始计算,google-apps-script,google-sheets,google-sheets-formula,Google Apps Script,Google Sheets,Google Sheets Formula,我每天晚上都会从不同的系统下载一个CSV文件。我需要每天将这个CSV导入谷歌表单。我的Google Sheets获取CSV数据,并对数据进行许多不同的计算,以生成最终的数据集 我能够通过使用一个功能将CSV数据上传到谷歌表单中来完成所有这些工作,如下所示: function importCSVFromGoogleDrive() { var file = DriveApp.getFilesByName("DualCreditExport.csv").next(); var csvData
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行之前,这一切都很正常。原因是,只要上传几行,我的谷歌工作表就会开始计算。它们需要几分钟的时间来运行,然后继续上载并重新启动calcs
因此,基本上,导入总是被计算中断,这使得导入脚本超过了最大执行时间
但是,导入脚本只需15秒即可运行。计算大约需要5分钟。因此,如果我能够完成导入,然后运行计算,我会很好
任何关于如何将csv完全上传的想法都将不胜感激。避免立即重新计算的一种方法是使用独立脚本项目或绑定到不同电子表格的项目和
SpreadsheetApp.openById(id)
或SpreadsheetApp.openByUrl(url)
而不是spreadsheet.getActive()代码>,这样在导入脚本执行期间,用户不会打开目标电子表格。这是因为除了重新计算任务所需的反计算外,在打开电子表格的客户端和服务器之间还有同步任务,没有其他方法暂停/停止重新计算。上传后,使用单独的脚本执行所有计算。感谢您的回复。其他人做了所有的计算,所以我不确定如何将它们转换成脚本。还有其他方法吗?使用sheets api而不是setValues@TheMaster请在此基础上展开一点。我不明白。使用高级服务。有关相关示例,请参见