2つのスプレッドシートをIMPORTRANGEにリンクします。たとえば、AとBをリンクします。Bがソースです。 Aには6時間ごとにBから数字をインポートしてほしい。なぜなら、Bの数字は絶えず動いているからであり、シートは本当に大きいので、シートAが遅くなるからだ。
それを行う方法はありますか?
IMPORTRANGE
関数は結果をキャッシュしないため、ソーススプレッドシートが変更されるたびに更新されます。
ただし、独自の関数を記述することでこれを回避できます。
function customImportRange(spreadsheetUrl, rangeStr, timestamp) {
var sheet = SpreadsheetApp.openByUrl(spreadsheetUrl);
var range = sheet.getRange(rangeStr);
return range.getValues();
}
ツール→エディターをクリックしてこの関数をインストールし、コードを貼り付けて、実行ボタン。これにより、スクリプトに実行許可を与えるように求めるダイアログがポップアップ表示されます。
スクリプトはIMPORTRANGE
とまったく同じですが、Google Apps Scripts関数であるため、Google Spreadsheetsは結果をキャッシュし、notフェッチします関数のパラメーターが変更されていない限り、新しいデータ。
つまり、timestamp
パラメーターを6時間ごとに変更して再取得をトリガーできることを意味します。つまり、6時間ごとに新しい値を生成する数式が必要になります。
セルB1
に=NOW()
を配置し、セルC1
に次の式を配置するとします。
=DATEVALUE(B1) * 10 + ROUNDUP(HOUR(B1) / 6)
セルC1
には、6時間ごとに変わる数値が表示されるようになりました。つまり、関数への入力として使用できます。セルA2
に次を入力します。
=customImportRange("https://docs.google.com/spreadsheets/d/1qFryUlGfGT8dp_lx9sSE_7suCV0t8cAg9btM1AOPnSI/edit#gid=0", "'Custom function'!A4:F6", C1)
パラメータは次のとおりです。
スプレッドシートの例 を作成しました。これを実証するために、自由にコピーして実験してください。
スプレッドシートをブラウザで開いていないときにも更新するには、ファイル→スプレッドシート設定に移動して再計算から変更時および毎時間.