8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Redashのクエリで取り出したデータをGoogleスプレッドシートに書き込むスクリプトがわりとシンプルに書ける

Last updated at Posted at 2018-01-20

今回はデータベースのデータの変動をちょっと見てみたいというオーダーを受けて、簡易的にスプレッドシートに毎時抽出したデータを記録していくスクリプトを作ったのですが、わりとシンプルに書けたのでご紹介します。

作ったもの

抽出データSS

1時間ごとにスクリプトを実行するトリガーを設定すると、こんな感じに1行ずつデータが蓄積されていきます。

スクリプトの全体像

function main() {

  // Redashからデータ取得
  var redash = new Redash.Redash();
  var response = redash.getData(1513);
  var rows = response.query_result.data.rows;

  // 書き込むシートを選択
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('data');

  // データの入っている最後の行の次の行番号を取得
  var newRowNum = sheet.getLastRow() + 1;

  // A列のセルに実行日時を書き込む
  sheet.getRange(newRowNum, 1).setValue(new Date());

  // 1列ずつセルを進める
  for (var i = 0; i < rows.length; i++) {
    var col = i + 1;

    // 1行目にカラムヘッダーを書き込む
    sheet.getRange(2, col).setValue(rows[i].date);

    // B列以降のセルに取得したデータを書き込んでいく
    sheet.getRange(newRowNum, col).setValue(rows[i].amount);
  }
}

処理を詳しく見ると

スプレッドシートの中で書き込むシートを選択

// 書き込むシートを選択
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('data');
抽出データSS-1.png

書き込む行を選択

今回は1行ずつ下に新しくデータを書き込んでいきます。

SS-2.png
// データの入っている最後の行の次の行番号を取得
var newRowNum = sheet.getLastRow() + 1;

getLastRow()とやるとデータの書き込まれている最後の行番号を取得できます。

実際にデータを書き込む

あとはfor文で1列ずつセルを進めながらデータを書き込んでいきます。

// 1列ずつセルを進める
for (var i = 0; i < rows.length; i++) {
  var col = i + 1;

  // 1行目にカラムヘッダーを書き込む
  sheet.getRange(2, col).setValue(rows[i].date);

  // B列以降のセルに取得したデータを書き込んでいく
  sheet.getRange(newRowNum, col).setValue(rows[i].amount);
}

まとめ

わざわざデータ抽出用のテーブルやバッチを作るほどではないときにはGoogleAppsScripで使い捨てのスクリプトをさくっと作ってしまうのが良いと思います。

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?