infoScoop for Google AppsにGoogleサイトの新着情報を表示する -第2回目-

| コメントをどうぞ

前回の記事での設定でサイト内全体の新着情報をガジェットに表示できるようになりました。
今回はさらに設定を追加して、取得するコンテンツの細かな条件設定を行う方法について説明します。

RSSリーダー for Google AppsガジェットでGoogleサイトから取得するコンテンツの条件を設定するにはガジェットに設定するRSS URLにGoogleサイトAPIの各種パラメータを指定します。

指定可能なパラメータには以下のものがあります。

GoogleサイトAPI Ver1.4 Contents Feed パラメータ

パラメータ 説明 データ型 備考
ancestor 特定のページの下階層(子階層、孫階層など)のコンテンツのみをデータ取得の対象とする場合に指定します。 string データ取得の対象とする祖先ページのIDを指定します。例: 0123456789. 指定された祖先を持つコンテンツのみがデータ取得の対象となります。
include-deleted 削除済みコンテンツをデータ取得対象とするかどうかを指定します。 boolean true または false を指定します。 デフォルト値は false となります。
include-draft 下書き中のコンテンツをデータ取得対象とするかどうかを指定します。 boolean true または false を指定します。 デフォルト値は false となります。下書き中のデータを取得するには対象のコンテンツのオーナーであるかまたは編集者である必要があります。
kind 特定のコンテンツ種別のみをデータ取得対象としたい場合に指定します。 カンマ区切りの文字列 指定可能な値は次の通りです。

指定した場合に取得されるコンテンツ
announcement お知らせのページの投稿
announcementspage お知らせのページ
attachment 添付ファイル
comment 各ページに対するコメント
filecabinet ファイルキャビネットのページ
listitem リストページのアイテム
listpage リストページ
webpage Webページ
webattachment Webページの添付ファイル?

例えばリストページとWebページのみをデータ取得対象とする場合は、”listpage,webpage”と指定します。
この値を省略した場合は以下が取得の対象となります。
・announcement
・announcementspage
・filecabinet
・listitem
・listpage
・webpage

parent 特定のページの子階層のコンテンツのみをデータ取得の対象とする場合に指定します。
ancestorの指定とは異なり、孫階層以下のコンテンツはデータ取得の対象となりません。
string データ取得の対象とする親ページのIDを指定します。例: 0123456789.
path 特定のパスで指定されるページ内のコンテンツをデータ取得対象とする場合に指定します。 string データ取得対象とするページのパスを指定します。 例: path=/path/to/page.

GoogleサイトのAPIについてはこちらで詳細に紹介されています。
なお、この記事の公開時点でのGoogle Sites APIの最新バージョンは1.4となっています。

特定のお知らせページの新着投稿のみをガジェットに表示してみる

今回は前述のパラメータを利用して特定のお知らせページの新着投稿のみをガジェットに表示してみたいと思います。

この場合、ガジェット設定画面の[RSS URL]欄に指定するURL書式は以下のようになります。

https://sites.google.com/feeds/content/<ドメイン名>/<サイト名>?parent=<対象のお知らせページのID>

上記のような簡単な設定を行うだけなのですが、ここで大問題が一つ。
parentパラメータに指定する<対象のお知らせページのID>なのですが、なんとこれをユーザが確認できるUIがGoogleサイトには用意されていません(2014年6月時点)。・・・いや、まぁAPIの世界の話なので通常は必要ないのかもしれませんが、一切確認できないってどうなのよ・・・

ではこのIDを確認するためにどうするか、ということですが現状では以下のいずれかの手法に頼ることになります。

  • GoogleサイトAPIを利用してIDを確認するアプリケーションを作成する
  • Google OAuth 2.0 Playgroudを利用してGoogleサイトAPIを実行する

前者は開発者以外の方にとっては敷居が高いですので今回は後者の方法でGoogleサイトのコンテンツIDを参照してみます。

Google OAuth 2.0 Playground

Google OAuth 2.0 Playground は「Playground」の名が示すとおり、Googleが現在提供している各種APIをプログラム開発することなく簡単に動作検証できる環境です。

ではさっそく使い方を説明していきましょう。

  1. OAuth 2.0 Playgroundにアクセスする
    まずはこちらからOAuth 2.0 Playgroundにアクセスします。
    google-sites-feed-on-infoscoop4g-2-01
    未ログインの場合は画面右上の[ログイン]からGoogle Appsにログインしてください。

  2. 使用するAPIを選択する
    画面左に利用可能なAPIの一覧が表示されています。この中から「Sites V1.4」を開き、「https://sites.google.com/feeds/」を選択した上でリスト下側の[Authorize APIs]ボタンをクリックします。
    google-sites-feed-on-infoscoop4g-2-02
    すると以下のようなデータアクセスに対する承認を求める画面が表示されますので[承認する]ボタンをクリックします。
    google-sites-feed-on-infoscoop4g-2-03

  3. トークンを取得する
    データアクセスの承認を行うと画面左部分がStep2へと進み、以下の画面が表示されます。
    google-sites-feed-on-infoscoop4g-2-04
    [Exchange authorization code for tokens]ボタンをクリックし、トークン(データ取得の際に用いられるパスワードのようなもの)を取得します。

  4. データ取得用のURLを指定し、データ取得を実行する
    トークンの取得が行われると、画面左部分がStep3へと進みます。
    google-sites-feed-on-infoscoop4g-2-05
    [Request URI]欄にデータを取得するためのURLを指定します。
    今回は特定のお知らせページのデータを参照したいので以下のようにRequest URIを設定します。

https://sites.google.com/feeds/content/<ドメイン名>/<サイト名>?pathinfo=<お知らせページのパス>&kind=announcementspage&alt=json

上記リクエストではpathinfoパラメータにより特定されるページ情報をJSONで取得するリクエストです。
kindパラメータを指定しているのはこれがないとお知らせページ内の投稿もデータ取得対象となってしまうため、不要なデータを取得しないためにお知らせページそのものだけを取得するためです。

<お知らせページのパス> は対象となるお知らせページのURLから判別します。
例えば、ページのURLが以下であったとします。

https://sites.google.com/a/infoscoop.org/siteinfo/start-page/company-info

この場合、ページのパスは “/start-page/company-info”となります。
Request URIの設定が終わったら[Send the request]ボタンをクリックし、データを取得します。

  1. 結果データからIDを取得する
    リクエストが正常に行われると画面右部分に結果データが表示されます。
    google-sites-feed-on-infoscoop4g-2-06
    結果からentry要素のidの値を参照します(ブラウザの検索で”id”で検索すると良いかと思います)。

すると以下のようなURLがentry.id.$tの値に設定されています。

https://sites.google.com/feeds/content/infoscoop.org/siteinfo/7560972020039654424

このURL末尾の数値の部分が対象となったお知らせページのコンテンツIDとなります。

ということでガジェットにRSS URLを設定する

前述の操作によりやっと<対象のお知らせページのID>が判明したので改めてRSSリーダー for Google AppsガジェットのRSS URLを設定します。

https://sites.google.com/feeds/content/<ドメイン名>/<サイト名>?parent=<対象のお知らせページのID>

ガジェットの設定等については前回の記事を参考にしてください。

設定が完了したらポータルに設定を行ったガジェットを配置し、結果を確認してみてください。
上手くできましたでしょうか。
今回は特に指定していませんが、RSS URLに必要に応じてその他のパラメータを指定することで様々なデータをガジェットに表示することができます。機会がありましたらお試しください。

なお、GoogleサイトのコンテンツIDの取得について今回はOAuth 2.0 Playgroundを使用する方法を紹介していますが、「もっと簡単な方法があるぞ!」という方がおられましたらぜひ教えてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>