CA Reward

Tech Blog

Tech Blogトップに戻る

GAS で BigQuery など

2016.06.24

  • このエントリーをはてなブックマークに追加
  • Pocket
ノダ
ノダエンジニア

弊社にもデータ分析基盤としてBigQueryが導入されました。

使い始めは、BigQueryのWebインターフェイスでSQLを直接たたいていたのですが、定型的な調査を何回も繰り返す際に、Google スプレッドシートを介してGASで実行させると楽できそうと感じたので、試してみました。

クエリ実行のためのコードなど

リファレンスは割と乏しい?

GASとしてのBigQueryのリファレンスは以下で
https://developers.google.com/apps-script/advanced/bigquery

GASが呼び出しているAPIのリファレンスは以下
https://cloud.google.com/bigquery/docs/reference/v2/

サンプルコードはあるけど、行間を読み解いたり試行錯誤が必要そう。

エッセンスとしては、

で、取れてきた結果をごにょごにょすることで行けそう。

クエリ実行のための設定など

まず、スクリプトエディタの、リソース ⇒ Googleの拡張サービス から、「BigQuery API」を有効にします。

20160623001821.png

(設定ダイアログが何か歪んでいるのはきっと人格エラーです。Windows Google Chromeなんですけどね・・・)

で、上記ダイアログにもあるように、Google デベロッパーコンソールでも有効にする必要があります。

20160623002109.png

有効にしないと、以下のように漏れなく叱られます。

20160623002149.png

ライブラリ化を試してみる

BigQuery APIの有効化、2回設定しないといけないのはとても面倒だ!!ってことで、BigQuery に関するコードをライブラリ化して、設定とともに閉じ込めることができないか、試してみた。

呼び出し側プロジェクトのコード(適当)

結果発表

無理でしたorz

呼び出し側プロジェクトで、Googleの拡張サービス と Google デベロッパーコンソール の両方で BigQuery APIを有効にしないと、エラーになりました。

ライブラリ側は、BigQuery APIの設定有効化全く要りませんでした。

ライブラリ化する意味は、コードが共有化できる以上の意味はないのかと思われます。

これ多分ですが、BigQuery に限らず、Googleの拡張サービスは全部こうなると思われます。。。

まとめ

GAS で BigQuery にクエリ投げてスプレッドシートに結果返すのは、とてもハードルが低いです。

公式的なリファレンスが、上記に紹介した2つくらいしか見つからず、空気読んでコード書く必要はありますけど、Webの世界には先達がたくさんいますし、スクリプトエディタのコード補完もあるので何とかなるレベルと思います。

ベースを作ってしまったら、定型レポートもサクサクいけそうだし、スプレッドシートの表現力、たとえばグラフなどを活用したら業務利用も十分視野に入ります。