30行ぐらいで Redash のクエリ実行結果を Google スプレッドシートに書き込むサンプルコード

この記事は Redash Advent Calendar 14日目の記事です。

adventar.org

タイトルの通り、Redash の利用事例で話されることが多く、私も活用している Redash と Google スプレッドシートの連携について、Python のサンプルコードを公開してみます。

使うもの

主に以下のパッケージを利用します。

github.com

github.com

github.com

github.com

サンプルコード

GitHub で公開しました。

github.com

正確には 27行です。行数を削るために少し苦しい書き方になっている部分はご了承ください。

動かし方

まずは venv で環境構築します。

$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip install -r requirements.txt

Google のサービスアカウントを使用して API にアクセスします(この記事ではサービスアカウントの作成などについては割愛します)

サービスアカウントの JSON 鍵ファイルを環境変数で指定します。

$ export CLIENT_SECRET_FILE="/path/to/json/key/credential.json"

Redash のユーザー API キーも同様に環境変数で指定します。

このサンプルコードでは、Redash のデモサイトを使用していますが、お使いの環境にあわせてサンプルコードの URL を変更してください。

$ export REDASH_API_KEY="YOUR_REDASH_USER_API_KEY"

最後に、 main.py を編集します。

                         spreadsheet_id="スプレッドシートID",
                         spreadsheet_range="シート1!A1",

スプレッドシート ID と書き込み先の範囲を指定します。

書き込み対象のスプレッドシートには、サービスアカウントから書き込み可能な権限を付与してください。

デモサイトを使用しない場合は、以下のコードを書き換えて使用したいクエリ ID を指定してください。

    df = query_to_df(redash, 1)

以下のようにパラメータを使用することもできます。

    df = query_to_df(redash, 123, {'foo': 1, 'bar': 2})

実行してみる

準備ができたら実行してみましょう。

$ python main.py

f:id:ariarijp:20181214204422p:plain

実行が完了すると、上記のようにスプレッドシートの指定した範囲に結果が書き出されるはずです。

まとめ

Redash とスプレッドシートを簡単に連携されることができました。

まだスプレッドシート連携までは手が出せていない。というかたは、よろしければ試してみてください。

明日の Redash Advent Calendar は Redash のメンテナーでもある deecay さんによる「2018年の活動振り返り」です!お楽しみに!