Google Apps Scriptで自動で特定のセルの値を別シートに蓄積していく

やったこと

IMPORTHTML関数を用いて取得したデータを、関数で整形。
整形したデータを、Goole Apps Scriptを用いて一時間ごとに別シートに保存。

作成コード

//TODO: スプレッドシートの取得
//スプレッドシートのid  
var id= "1W4frwxxnm7xn0Vv3fKtJcwSPRFDb-yh0-JlW9j0PFrg"
var File = SpreadsheetApp.openById(id);
var baseSheet = File.getSheetByName("データ取得"); 

//TODO: スプレッドシートの決まった箇所に決まった値を挿入
function MainFrame() {
  setDataList("データ保存",DataArray(4,14,1,2)); // 2列分取得
}

//TODO:スプレッドシートに、取得日時、額面金額、販売率を行に追加する
function setDataList(sheetName, DATA_Array){
  var Sheet = File.getSheetByName(sheetName);
  Sheet.appendRow(DATA_Array); // 最終行に配列データを追加する
}

//TODO:指定範囲のセルから、取得日時、額面金額、販売率をリターンする
function DataArray(row,col,rowNum,colNum){
  var array = baseSheet.getRange(row,col,rowNum,colNum).getValues()[0]; // getValuesは2次元配列なので、最初の行のみを指定
  var date = new Date();
  array.unshift(date) // 取得日時を配列の先頭にAppendする
  return array; // 取得日時、額面金額、販売率をリターンする
}

(参考ページ)
【GAS】IMPORTXML関数で取得した値を、1時間おきに定期実行で行を追加する

実行結果

以下の画像に示すように、ほぼ一時間きっかりに、自動的にデータが保存されていく。

補足事項

データを保存するときに、appendRow()関数を用いて別シートの最終行の一つ下にデータを追加していっている。
このとき、

やってみた感想

割と簡単にデータを保存できたのは驚き。
また、スプレッドシートのIMPORTHTML関数で、簡単にスクレイピングができるのには感動した。
特定のサイトの特定の値の経時変化を見たい場合(例えば、株価のデータなど)、このGoogle Apps Scriptを用いると簡単にデータの取得ができる。

その他参考記事

Google Apps Scriptで配列を使ってスプレッドシートにデータ行を追加する方法
Google Apps Scriptでスプレッドシートにデータ行を挿入する2つの方法

コメント

タイトルとURLをコピーしました