2023年2月3日金曜日

Google Blogger APIを呼び出し記事の一覧と記事の内容を取得する

 このブログはGoogleのBloggerを使っているのですが、Google Search Consoleで確認すると、インデックスが作成されているページは120程度で少々残念な状況でした。またコード・スニペットはGistに載せて埋め込んでいるため、検索の対象になっていません。

これらのデータをデータベースに保存しOracle Textで検索できるようにするため、まずはBloggerから記事の内容を取得することにしました。

GoogleのBloggerを使っている人以外にはあまり関係ないかもしれませんが、JSONを返すGoogleのAPI v3.0は他のAPIと共通の仕様もあるようです。例えば記事の一覧をすべて取得するにはAPIを複数回発行する必要がありますが、そのために以下のような指定を行っています。

  • URLパラメータのfieldsにnextPageTokenを含める。
  • JSONの応答からnextPageTokenを取り出す。
  • URLパラメータpageTokenにnextPageTokenの値を指定し、その他は同じAPIを発行する。
  • nextPageTokenが無くなるまで繰り返す。
実施した作業について、簡単に紹介します。

Google Cloudのコンソールよりプロジェクトを作成し、Blogger APIを有効にします。Blogger APIを有効にした後、認証情報の画面を開き、APIキーを作成します。

今回は公開された記事しか扱わないため、APIキーでAPIの認証を行なうことにしました。

GoogleのAPIキーによるWeb資格証明を作成します。

Oracle APEXのワークスペース・ユーティリティよりWeb資格証明を開きます。

Web資格証明名前静的識別子は任意です。今回はBLOGGER_API_KEYとしています。

認証タイプとしてURL問合せ文字列を選択し、資格証明名としてkeyを指定します。その上で、資格証明シークレットAPIキーを入力します。

URLに対して有効は、Blogger APIのURLを設定しています。これはAPIの種類によって変わるでしょう。


このWeb資格証明をAPEX_WEB_SERVICE.MAKE_REST_REQUESTの引数p_credential_static_idに指定すると、URL問合せ文字列としてkey=APIキーが追加されます。

APIを呼び出すコードはパッケージUTL_BLOGGER_APIとして作成しました。


これでBloggerから取得した記事の一覧を表BLOGGER_ARTICLESに保存し、それぞれの記事の内容も取り出して表に保存できるようになりました。