QlikでGoogle APIを叩くまでの長い道のり【後編】― トークンを自動更新し、データを完全取得する ―

こんにちは。
前回の記事(前編はこちら)では、GoogleビジネスプロフィールAPIを使うための
認証設定とRefresh Token奪取ミッションを無事クリアしました。

後編では、いよいよQlik側で

  • トークンを自動更新し、
  • APIを叩いて、
  • データをファイル化&可視化する

という、完全ノーコードの“自動収集パイプライン”を作ります。

目次

ステップ1:アクセストークンを自動更新する

APIトークンは1時間で切れます。
そこで、Qlik Automationの「Call URL」ブロックを使って毎回新しいトークンを取得する仕組みを作ります。

設定項目
URLhttps://oauth2.googleapis.com/token
MethodPOST
HeadersContent-Type: application/x-www-form-urlencoded
Body (Raw)(Params)grant_type=refresh_token&client_id=【クライアントID】&client_secret=【クライアントシークレット】&refresh_token=【取得済みのrefresh_token】

※BodyはParamsに記載します。「Raw入力モード」にして1行で入力するのがコツです。改行入れるとQlikが怒ります

出力例

成功するとこんなJSONが返ります

{
  "access_token": "ya29.a0ATi6K2...",
  "expires_in": 3599,
  "scope": "https://www.googleapis.com/auth/business.manage",
  "token_type": "Bearer"
}

access_token が次のAPI呼び出しで使うやつです。

ステップ2:APIを叩く(Raw API Requestブロック)

次に「Raw API Request」ブロックを追加して、
先ほどのトークンをヘッダーに渡します

{
  "path": "/v1/locations/***************:fetchMultiDailyMetricsTimeSeries?dailyMetrics=BUSINESS_IMPRESSIONS_DESKTOP_SEARCH&dailyMetrics=BUSINESS_IMPRESSIONS_MOBILE_MAPS&dailyMetrics=BUSINESS_IMPRESSIONS_MOBILE_SEARCH&dailyMetrics=BUSINESS_IMPRESSIONS_DESKTOP_MAPS&dailyMetrics=WEBSITE_CLICKS&dailyMetrics=CALL_CLICKS&dailyMetrics=BUSINESS_DIRECTION_REQUESTS",
  "method": "GET",
  "headers": {
    "Authorization": "Bearer {$.CallURL.response.access_token}"
  }
}

改行禁止。1行で書かないと謎の CURLE_BAD_FUNCTION_ARGUMENT が出ます。

ステップ3:日付範囲を変数で指定する

APIのパラメータに、

dailyRange.start_date.year / month / day  
dailyRange.end_date.year / month / day

があります。
これをQlik Senseシート側でDatepickerを使い、vStartDate と vEndDate 変数をAutomationに渡すと、「好きな日付範囲でAPIを叩ける」ようになります。

ステップ4:レスポンスをCSV化してS3に保存

APIのレスポンスはJSON形式ですが、
Write line to file on Amazon S3 ブロックを使えば即座にCSV化できます。

JSON → List objects → For each item → Write line
の3ステップ構成が鉄板です。
一度「fwrite(): supplied resource is not a valid stream resource」に遭遇しましたが、
それは ファイルストリームが閉じてるだけ。
前のブロックで “Open file” を入れればOKです。

ステップ5:Qlikアプリでグラフ化

S3に保存されたCSVをデータソースとしてロード。
ロードスクリプトで簡単に日付結合

LOAD
    @1 as metrics,
    @2 as 年,
    @3 as 月,
    @4 as 日,
    @5 as 回数,
    Date(MakeDate(年, 月, 日)) as 日付
FROM [s3://gmb-data/*.csv];

このまま日次の推移グラフにすれば、
Googleビジネスプロフィールの見えないトラフィックを丸裸にできます

おまけ:この方法はGoogle以外でも使える

この設計は、実はほぼすべてのOAuth2 APIで流用可能です。
たとえば:

  • YouTube Data API
  • Search Console API
  • Microsoft Graph API
  • Notion / HubSpot / Slack API

Refresh Token があれば
Call URL で Access Token が再発行できる
これが本質。つまり…

Qlik が ETL / API クライアントになる
ということです。

まとめ

  • Refresh Tokenを変数で管理
  • Call URLで1時間ごと(Automation実行毎)にAccess Token更新
  • Raw API Requestでデータ取得
  • Write lineでS3にCSV保存
  • Qlik Senseでビジュアライズ

✅ Python不要

✅ Cron不要

✅ 完全ノーコードでAPI自動収集

これが Qlik が API を殴り、
データを取り、可視化するまでの
“完全自動パイプライン” の全容です。

あなたの Qlik が
今日から API クライアントになります。

以上、後編でした
おつかれさまでした!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次