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

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');

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

// データの入っている最後の行の次の行番号を取得
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で使い捨てのスクリプトをさくっと作ってしまうのが良いと思います。