(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【GoogleAPI】AccessToken(アクセストークン)の自動更新をスクリプトで行う

スポンサーリンク

はじめに

GoogleAnalyticsのレポートでは、基本的に毎時あたりで丸めたログが表示されます。

ただし、リアルタイムという分析では秒単位の頻度で更新がある状態で現在の閲覧ユーザ数が確認できます。
f:id:mtiit:20190314150030p:plain
この部分です。

このデータをAPIを通して取得するための記事を以下に記載しました。

これを1分置きに実行すれば、1日全体のログが詳細に取れます。
一方でGoogleAPIではアクセストークンの期限があるので更新するロジックを入れる必要があります

本記事ではそれらを実行するスクリプトの紹介と、結果として取得したデータを可視化してみます。

アクティブユーザを1分毎に取得

以下のスクリプトにして毎分実施することにします。

curl -d "client_id=XX&client_secret=XX&refresh_token=XX&grant_type=refresh_token" https://accounts.google.com/o/oauth2/token 2>/dev/null| grep ccess_token | awk -F '"' '{print $4}' > /home/XX/Test/token.txt
token=`cat /home/XX/Test/token.txt`
curl 'https://www.googleapis.com/analytics/v3/data/realtime?ids=ga%3XX&metrics=rt%3AactiveUsers' --header "Authorization: Bearer $token" --header 'Accept: application/json' --compressed 2> /dev/null| awk '{print substr($0,index($0,"totalsForAllResults"))}' | awk -F '"' '{print $5}' >> home/XX/Test/Log/`date +%Y%m%d`.txt

簡単な解説ですがcurlでアクセストークンを取得しtoken.txtに書き込みます。

curl -d "client_id=XX&client_secret=XX&refresh_token=XX&grant_type=refresh_token" https://accounts.google.com/o/oauth2/token 2>/dev/null| grep ccess_token | awk -F '"' '{print $4}' > /home/XX/Test/token.txt

以下で値を変数tokenとして読みこみ

token=`cat /home/XX/Test/token.txt`

以下でそのトークンを利用してアクティブユーザを取得しにいきます。

curl 'https://www.googleapis.com/analytics/v3/data/realtime?ids=ga%3XX&metrics=rt%3AactiveUsers' --header "Authorization: Bearer $token" --header 'Accept: application/json' --compressed 2> /dev/null| awk '{print substr($0,index($0,"totalsForAllResults"))}' | awk -F '"' '{print $5}' >> home/XX/Test/Log/`date +%Y%m%d`.txt

取得した値は管理しやすいように日付をファイル名としてLogディレクトリに配置します。

ちなみにdateコマンドを使いますが、時間が日本時間でない場合は設定を変更するかスクリプトに以下を入れてください。

export TZ=JST-9

これをcronに以下のように設定すれば毎分実行する準備が完成します。

$ crontab -l
* * * * * /home/XX/getactiveuser.sh

実行結果

1日動かした結果ですが、1440行、つまり1日分のログが格納されています。

cat /home/XX/Log/20190315.txt | wc -l
1440

そのままExcelに入れると以下のようになりました。
f:id:mtiit:20190316081436p:plain
GoogleAnalyticsでは見れない波形データです。
f:id:mtiit:20190316081617p:plain

終わりに

GoogleCloudPlatformを触ってみたくて始めた本取り組みですが、おもしろいデータが取れて良かったです。
クラウド環境に自分の専用環境が無料で用意できるのは、やはりありがたいですね。

以上、興味があればぜひ再現してみてください。