数式のように自動的に更新するのではなく、特定の時間に1日に1回、この数式からテーブルをインポートする方法を探しています。毎日市場の特定の動きを追跡するためにこれを行う必要があります。
=IMPORTHTML("http://www.cmegroup.com/trading/agricultural/grain-and-oilseed/corn.html","table",1)
importhtml
を1つのシートに保持し、別のシートを履歴ログに使用します。これらの下にSheet1とSheet2があります。
function dailyLog() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var currentSheet = ss.getSheetByName('Sheet1');
var logSheet = ss.getSheetByName('Sheet2');
var lastRow = logSheet.getLastRow();
logSheet.getRange(lastRow + 1, 1).setValue(new Date()); // insert timestamp
var range = currentSheet.getDataRange();
range.copyTo(logSheet.getRange(lastRow + 2, 1), {contentsOnly: true});
}
このスクリプトは毎日実行するように設定する必要があります(スクリプトエディターで、[リソース]> [このプロジェクトのトリガー]に移動し、そのための毎日のトリガーを作成します)。
スクリプトは、Sheet1のデータ範囲をSheet2のデータ範囲の最後にコピーし、内容のみを保持します(手動アクションCtrl-Shift-Vと同等)。
最初に、importhtml()
コマンドをarray_constrain(..., 2, 99)
でラップして、テーブルにテーブルの2行(ヘッダーと最初のデータ行)のみが存在するようにします。
次に、次の機能を毎日実行するようにスケジュールします。シートの2行目を取得し、同じシート内で下にコピーします。
function dailyLog() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet1');
var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
var range = sheet.getRange(2, 1, 1, lastColumn);
range.copyTo(sheet.getRange(lastRow+1, 1), {contentsOnly: true});
}