web-dev-qa-db-ja.com

Googleスプレッドシートを使用してウェブページの変更を監視する

Webページを監視したい。私が見つけた最良の解決策はGoogleスプレッドシートでした
(制限のあるfeed43を除く)。

GoogleスプレッドシートでimportHTML関数を使用しています。この関数は、そのWebページのデータに変更があるたびにセル値を更新します。

ただし、以前の値をどこかに保存する方法がわからず、可能であれば、そのセルのデータを上書きするのではなく、スプレッドシートの次の行に新しい更新値を追加します。

4
Nigel

はい、このような単純なスクリプトでそれを行うことができます。それが何をする:

  1. 現在の値が最新の「アーカイブされた」値と等しいかどうかを確認します。
  2. そうでない場合は、現在の値をアーカイブし、この目的のために行を挿入します。

スクリプトをスクリプトエディターに入力したら、そのトリガーを作成する必要があります。「リソース」>「このプロジェクトのトリガー」を参照してください。 2つのオプションは、定期的に実行するか、データが変更されたときに実行することです。 2番目の方法はこのタスクにとってより自然ですが、onChangeが機能しない場合(一部の人々は過去に問題を抱えていました)、時限トリガーはオプションです。

function recordChanges() {
  var url = 'the URL of your spreadsheet';   // put URL here
  var ss = SpreadsheetApp.openByUrl(url);
  var sh = ss.getSheetByName('Sheet1');  // or whatever name
  var range = sh.getRange("A1:A2");    // assuming your data appears in A1 cell
  var values = range.getValues();
  if (values[0][0] != values[1][0]) {
    sh.insertRowAfter(1);
    sh.getRange("A2").setValue(values[0][0]);
  }
}

これは、スプレッドシートで200,000セルの制限に達するまで続きます。スプレッドシートに1つの列がある場合、最大200,000行になる可能性があるため、1時間ごとに別の行が追加されても、20を超えます年。

1
user79865