0
私はCSVファイルをインポートするスクリプトを持っています。 それは動作しますが、それは私の意見では本当に遅いです。 CSVファイルがかなり大きいので、スクリプトは最大実行時間を超えています。GASでのCSVのインポートが遅すぎる
私のコードのスピードを上げる方法の提案はありますか?
FYI: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にプッシュし、forループからsetValuesを移動しました)。スクリプトは数秒で実行されます! – Casper
投票に感謝し、結果をお知らせください。ループの中で 'setValues()'を動かすという重大な変化について答えを更新しました。 –
さらに改善があります。新しい2D配列を作成する必要はありません.parseCsv関数はすでに2D配列を返していますので、その結果(データ変数)を直接setValuesに渡すことができます。複数のforループ専用の13行を簡単に削除できます。 –