FFFT

webプロダクト開発に関する話をつらつらと

adwordsのレポートデータをspread sheetに定期的に吐き出してredashが取り込めるようにする

f:id:keyama4:20181116001849j:plain

まずはspread sheetにgoogle adwordsの日毎のコストデータを吐き出させます。

spread sheetのGoogle Adsというアドオンを使うのがシンプルで楽そうだなーと思い、試してみました。
実際にシンプルにadwordsのレポートデータを引っ張ってこれるんですが都度手動で取り込まなくちゃいけない、且つ、日次データは取得できる期間が限られているので最終的にredashが取り込むとすると部分的なデータが取れてもなー、というのを思い、アプローチを変えてadwords scriptを使いました。

adwordsにログインし、ヘッダのツールの一括操作 > スクリプトからadwords scriptを作ります。
サンプルは下記です。
吐き出し先のspread sheetのURLを付け替えてもらえればそのまま動作します。

ソースコード内のNOTEにも記載しましたが2点注意が必要です。

adwordsのレポートはAWQLという一般的なSQLとはビミョーに異なる文法で書かれます。
レポートの対象期間の指定にDURINGを使うのですがこれがadwords側で事前に今日の分や過去1週間分などのコード値が定義されており、それを使って期間を指定します。
すべての期間ももちろんあってALL_TIMEというコードをDURINGに指定してあげればいいんですが、、、レポートではALL_TIMEは使えないとのこと。

AdWords クエリ言語(AWQL)  |  AdWords API  |  Google Developers

ALL_TIMEだめだと手運用残すか、ちょっとめんどくさいスクリプト組まなきゃならないなーといろいろ試行錯誤していたら自分で日付の範囲指定ができたのでadwordsを使い始めた日から、今日までの指定を動的にされるように作ってみました。
このやり方であればALL_TIMEと同じことが実現できました。
これを許容するならALL_TIME指定させてくれー、と思わずにはいられなかったですが。。。

もう1点はredashが取り込む際にそのままのCostの形式だと正しくimportされず、数字がずれてしまうので調整してあげる必要があります。
これでspread sheetへの吐き出しはOK。

最後に定期実行されるようにすれば手運用は一切する必要がなくなります。
定期実行の設定ですがスクリプトの作成画面からは設定ができません。わかりづらい。
スクリプトの一覧画面の頻度の列の対象セルをクリックすると設定できます。
自分は日別の0:00を設定しました。

次はredashにデータソースとしてspread sheetのデータを読み込ませるやり方ですが、公式にシンプルにまとめられています。

Querying a Google Spreadsheet | Redash

GCPを使ってService Account(マシンユーザー的な概念です)を作成し、そのService Accountのクレデンシャル情報のjsonデータをredash側でぽちぽち設定し、最後にredashから読み込ませたいspread sheetの共有設定に作成したService Accountのメールアドレスを登録すればOK。

こちらの記事が手順を丁寧にまとめてくれています。
Re:dashでGoogle SpreadSheetを読み込む - Qiita

最後にspread sheetに吐き出されるCost列の表示形式を設定しておきます。
これを行わないとredash側でインポート時に数字がズレます。
Cost列を選択して表示形式から数字 -> 書式なしテキストを選択します。

f:id:keyama4:20181118135647p:plain

これでadwordsのコストを使ったメトリクス分析がredashで行えるようになりました。
redashで設定したspread sheetのqueryを更新すると正しくデータが読み込まれることが確認できるかと思います。