0
我有一個導入CSV文件的腳本。 雖然有效,但在我看來確實很慢。 由於CSV文件非常大,腳本超出了最大執行時間。在GAS中導入CSV - 太慢
有沒有人有關於如何提高我的代碼速度的建議?
僅供參考:由於S3身份驗證,我無法使用內置的表格功能。
function myFunction() {
var liquidityBalance = SpreadsheetApp.openByUrl(liquidityBalanceSheet).getSheetByName('Liquidity');
var s3 = S3.getInstance(awsAccessKeyId, awsSecretKey);
var fromS3 = s3.getObject(bucket, file);
var data = Utilities.parseCsv(fromS3.getDataAsString(), '\t');
var csv = []
liquidityBalance.clearContents();
for (var i = 0; i < data.length; i++) {
var row = []
for (var a = 0; a < data[i].length; a++) {
row.push(data[i][a]);
}
liquidityBalance.appendRow(row);
}
}
謝謝桑迪。我已經對代碼做了一些小改動(lastRow變量不是必須的,每次都需要乾淨的表單導入;將行推送到outerArray;將setValues移出for循環)。腳本現在運行幾秒鐘! – Casper
感謝您的投票並讓我知道結果。我更新了將'setValues()'移出循環的關鍵變化的答案。 –
還有一個改進。你不需要創建一個新的2D數組,parseCsv函數已經返回一個二維數組,因此你可以直接將它的結果(數據變量)傳遞給setValues - 你可以很容易地刪除那些專用於多個for循環的13條線。 –