BigQueryのデータを定期的にスプレッドシートにエクスポートするくん
これはなに
BigQueryを使っている方なら、定期的に決められたクエリを流してデータを取得したいみたいな運用を経験したことある人は多いと思います。
かくゆう私もそのひとりなわけですが、Google様のお力を使ってこの作業をなんとか自動化してみることにしたのでまとめる。
やり方
①スプレッドシートをBigQueryに接続
②スプレッドシートからBigQueryのクエリを実行してデータを取得
③マクロとGASで自動化の設定
①スプレッドシートをBigQueryに接続
1. スプレッドシートを起動 -> データコネクタ -> BigQueryに接続
②スプレッドシートからBigQueryのクエリを実行してデータを取得
3. データシートというシートができあがる
③マクロとGASで自動化の設定
※マクロとはGASで書いたプログラムをスクリプトエディタ側でなく、スプレッドシート画面から実行できるようにすること
参考:https://tanuhack.com/macro/
GASについて
私の場合は、決められたクエリを毎月指定した日に実行して、新しいシートとしてアウトプットしてほしかった。
GASで下記のコードを書いて、トリガーの getqueryresult
と createsheet
の実行時間をずらして設定した。
// BigQueryを叩く
function getqueryresult() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1').activate();
//クエリをセットしているシート名を指定
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('sheetname'), true);
SpreadsheetApp.enableAllDataSourcesExecution();
spreadsheet.getCurrentCell().getDataSourceTables()[0].refreshData();
}
// シートの名前を前の月にする(yyyy年m月分)
function sheetmonth() {
//今日の日付を取得
var today = new Date();
//1ヶ月後の日付にする
var thismonth = today.setMonth(today.getMonth() - 1);
//表示用に整形
var formatDate = Utilities.formatDate(today, 'JST', 'yyyy年M月分');
return formatDate;
}
// シートを自動生成する
function createsheet() {
var source = SpreadsheetApp.getActiveSpreadsheet();
var sheet = source.getSheets()[0];
// スプレッドシートのidを入力
var destination = SpreadsheetApp.openById('xxxxxxxxx');
// 上記で取得したシートを、そのスプレッドシートにコピー
var month = sheetmonth()
var copysheet = sheet.copyTo(destination).setName(month);
};
slack通知もしたかったら
上記自動化によって新しいシートが作成されたことをトリガーとして、zapierとか使ってslackに通知したらいいとおもう!
またはGASでslackのAPI叩きに行くのもよし!
補足
最初BigQuery->スプレッドシートへのエクスポートを自動化はできないの??って思った。
BigQueryってクエリの結果をcsvやスプレッドシートに落とす機能がある。
この機能を使って自動化できればとてもええやんって思ったけど、それはできないっぽかった。
Author And Source
この問題について(BigQueryのデータを定期的にスプレッドシートにエクスポートするくん), 我々は、より多くの情報をここで見つけました https://qiita.com/junsam22/items/7ae3a368797c6a818e67著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .