iOSショートカットからGoogle Indexing APIへリクエストする方法

ブログ記事を書くたびにGoogle Search Consoleでインデックス登録をリクエストしている人は少なくないだろう。
Google Indexing APIを使うと、わざわざサーチコンソールの画面にアクセスせずとも、インデックス登録リクエストの作業を自動化できる。
僕はiPhoneからブログを更新することも多いので、iOSショートカットからそれを実行する方法を解説する。

事前準備

下準備については、以下のサイトで丁寧に解説がなされているので参照してほしい。 ここからの解説は、サービスアカウントの作成が完了している前提で進めていく。

準備1:OAuth2.0の設定

  • 左側のナビゲーションメニューから「APIとサービス」 > 「認証情報」に移動
  • 「認証情報を作成」ボタンをクリックし、「OAuth 2.0 クライアントID」を選択
  • アプリケーションの種類で「ウェブアプリケーション」を選択
  • 名前は適当につける
  • 「承認済みのリダイレクトURI」に を追加
作成を押すと、「クライアント ID」と「クライアント シークレット」が表示されるので、これをメモしておく。

準備2:アクセストークンを取得

  • 以下のURLにブラウザでアクセス。 このとき、の部分を上記でメモした「クライアントID」に置き換える。
  • Google アカウントでログインし、アクセスを許可する。
  • 自動でGoogleのトップに飛ぶ。 このとき、ブラウザのURL欄を確認すると以下のようにcodeというパラメータが含まれているので、の部分をメモしておく。
⚠️
このcodeの有効期限は約10分しかないので、10分以内に次のステップを完了しよう。

準備3:リフレッシュトークンの取得

準備の最終ステップとして、ここからは実際にiOSショートカットを使っていく。 まずは、以下のような3ステップのアクションを構築して実行しよう。
以下、各アクションについて解説する。
  • 1つ目:「テキスト」アクション
    • 以下の記述を入れる。 の部分は、ここまでのステップでメモしたものに置き換える。
  • 2つ目:「URLの内容を取得」アクション
    • URL欄には、を入力する。 「方法」は「POST」を選択し、「ヘッダ」にはキーに「」値に「」と入力した行を追加する。 「本文を要求」は「ファイル」を選択し、ファイルには1つ目の「テキスト」アクションを指定する。
  • 3つ目:「結果を表示」アクション
    • 2つ目の「URLの内容を取得」の結果を表示するように設定する
完了したら、アクションを実行しよう。 以下のようなメッセージが返ってきたら成功だ。 の部分を控えておこう。
{"refresh_token":"","scope":"https:\/\/www.googleapis.com\/auth\/indexing","expires_in":3599,"access_token":"ACCESS_TOKEN","token_type":"Bearer"}
⚠️
もし、以下のようなエラーが返ってきたら、おそらくの有効期限切れなので、準備2からやり直そう。
{"error":"invalid_grant","error_description":"Bad Request"}
これで準備は完了だ。 実際に使用するショートカットの作成に移ろう。

ショートカットの作成

作成すべきアクションの全体像は以下のようになる。
以下、各アクションについて解説する。
  • 1つ目:「入力を要求」アクション
    • ここは特定のURLが渡せるアクションであれば何でもOK。
  • 2つ目:「テキスト」アクション
    • 以下の記述を入れる。 の部分はここまでのステップでメモしたものに置き換える。
⚠️
もし、メモしているの中に「\(バックスラッシュ)」が含まれていたらエラーの原因になるので削除しておくこと。 例)「1\/\/0e9…」のようになっていたら、「1//0e9…」とバックスラッシュを削除
  • 3つ目:「URLの内容を取得」アクション
    • URL欄には、を入力する。 「方法」は「POST」を選択し、「ヘッダ」にはキーに「」値に「」と入力した行を追加する。 「本文を要求」は「ファイル」を選択し、ファイルには2つ目の「テキスト」アクションを指定する。
  • 4つ目:「辞書の値を取得」アクション
    • 入力は3つ目の「URLの内容を取得」アクションのエッかを指定し、キーの欄にはと記述しておこう。
  • 5つ目:「テキスト」アクション
    • 以下の記述を入れる。 の部分には、1つ目:「入力を要求」アクションの結果を変数として挿入しよう。 URL_UPDATEDの部分はそのままでOKだ。
  • 6つ目:「URLの内容を取得」アクション
    • URL欄には、を入力する。 「方法」は「POST」を選択し、「ヘッダ」にはキーに「」値に「」と入力した行を追加する。 の部分には、4つ目:「辞書の値を取得」アクションの結果を変数として挿入しよう。 「本文を要求」は「ファイル」を選択し、ファイルには5つ目の「テキスト」アクションを指定する。
  • 7つ目:「結果を表示」アクション
    • 6つ目の「URLの内容を取得」の結果を表示するように設定する
すべて完了したら、アクションを実行して何か適当に自分のサイトのURLを入力してみよう。 以下のようなメッセージが返ってきたら成功だ。
{"urlNotificationMetadata":{"url":"送信したURL","latestUpdate":{"url":"送信したURL","type":"URL_UPDATED","notifyTime":"送信した日時(世界標準時)"}}}
試しに、送信したURLをサーチコンソール上で確認してみよう。 「前回のクロール」欄にショートカットを実行した日時が記載されていればリクエストが完了している。
これで、サーチコンソール上で手動でURLを送信したのと同じ状態になったので、あとはGoogleのインデックス化を待つだけだ。