私はスプレッドシートを読み込むGAS Web Appに取り組んでいます(スプレッドシートに関連付けられておらず、無関係の理由ではありません)。Google Web Appスプレッドシートの読み込みを高速化
は、私はこのように、範囲、そのシートに読み込む、または:
var ss = SpreadsheetApp.openById(ssId);
dataSheet = ss.getSheetByName('Projects');
var data = dataSheet.getRange('A1:BL').getValues();
が、私は多くのテストを行って、そして私の軽く人口A1としました:BL5500スプレッドシートを(かなりの数にセルに数十文字のテキストが埋め込まれている場合)、読み込み時間には約6秒かかります。私は名前のついた範囲とたくさんのものを試しましたが、それよりも速くすることはできません。
私が実際に必要とするのは、シートの1列です。次に、必要な行を検索するために検索を行い、その行が必要です。しかし、1列の読み込みには、全体の読み込みとほぼ同じ時間がかかります。これを行うより良い方法はありますか?遅れは問題である。比較のために
SpreadsheetApp.openById(ssid) [0.174 seconds]
Spreadsheet.getSheetByName([Projects]) [0 seconds]
Sheet.getRange([A1:BL]) [0.387 seconds]
Range.getValues() [6.483 seconds]
、ここではただ一つの列をロードしています:
はここでタイミングの内訳です
SpreadsheetApp.openById(ssid) [0.164 seconds]
Spreadsheet.getSheetByName([Projects]) [0 seconds]
Sheet.getRange([A1:A]) [0.336 seconds]
Range.getValues() [5.887 seconds]
これらは単なるシングルランがあり、時間差は、(彼らは異なります)重要ではありません。
私は回避策があります:新しいシートを作成しました。その1つの列は検索する列と同じです。私はそれをロードする。検索を完了すると、関連する行だけがシート全体から読み込まれます。それは約8秒から約2までの合計時間を要し、それは受け入れられる可能性があります。 – KeithKeithBoBeith
この解決策を回答として追加してください。 –
また、ssの公開されたcsvを解析する方がはるかに高速であることがわかりました。 –