指定したサイトのフィードを検索

広告

指定したサイトのフィードが存在するかどうか検索し、見つかった場合にフィードを取得し表示する方法について解説します。

1.google.feeds.lookupFeedメソッド
2.検索した結果の処理
3.サンプル

google.feeds.lookupFeedメソッドはグローバルメソッドとして用意されているメソッドであり、引数にサイトのURLを指定すると、サイトで用意されたフィードのURLを検索して返してくれます。

google.feeds.lookupFeed(url, callback)

1番目の引数にフィードを検索するサイトのURLを指定して下さい。検索が行われると2番目の引数に引数に指定したコールバック関数を呼び出します。

例えば次のように記述します。

google.feeds.lookupFeed("http://www.example.com/", dispfeed)

function dispfeed(result){
  /* ... */
}

次のように記述されても結構です。

google.feeds.lookupFeed("http://www.example.com/", function (result){
  /* ... */
});

フィードの検索が完了したら引数に指定した関数が呼び出されます。そして関数が呼び出される時、検索した結果が含まれるオブジェクトが引数として渡されてきます。

引数として渡されてきた結果オブジェクトには次の2つのプロパティに対する値が含まれます。

error?
url

「error」プロパティの値はフィードのロードエラーが発生した場合に含まれます。値が存在した場合、さらに「error.code」と「error.message」でHTTP スタイルのエラーコードとエラーの説明を取得することが出来ます。

「url」プロパティの値は指定されたサイトURLに関連付けられたフィードのURLです。

例えば次のように記述します。

google.feeds.lookupFeed("http://www.example.com/", function (result){
  if (!result.error){
    // エラーが発生していない場合の処理
    if (result.url != null) {
      // フィードが見つかった場合
    }
  }
});

google.feeds.lookupFeedメソッドでフィードのURLを取得したら後はgoogle.feeds.Feedクラスなどを使いフィードを取得するこが出来ます。

それでは簡単なサンプルで試してみます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>Google AJAX Feed API テスト</title>

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="./js/script2_1.js"></script>

</head>
<body>

<p>Google AJAX Feed API テスト</p>
<div id="feed"></div>

</body>
</html>
google.load("feeds", "1");

function initialize() {
  var siteurl = "http://googlejapan.blogspot.jp/";

  google.feeds.lookupFeed(siteurl, function (result){
    if (!result.error){
      if (result.url != null) {
        var feed = new google.feeds.Feed(result.url);
        feed.load(function (result){
          if (!result.error){
            var container = document.getElementById("feed");
            var htmlstr = "";
            htmlstr += '<h2><a href="' + result.feed.link + '">' + result.feed.title + '</a></h2>';
            htmlstr += '<p>説明 :' + result.feed.description + '</p>';
            htmlstr += '<p>作成者 :' + result.feed.author + '</p>';

            for (var i = 0; i < result.feed.entries.length; i++) {
              var entry = result.feed.entries[i];

              htmlstr += '<h3><a href="' + entry.link + '">' + entry.title + '</a></h3>';
              htmlstr += '<p>' + entry.contentSnippet + '</p>';
              htmlstr += '<p>日付 :' + entry.publishedDate + '</p>';
              htmlstr += '<p>カテゴリ :';
              for (var j = 0; j < entry.categories.length; j++) {
                htmlstr += '[' + entry.categories[j] + ']';
              }
              htmlstr += '</p>';
            }

            container.innerHTML = htmlstr;
          }else{
            alert(result.error.code + ":" + result.error.message);
          }
        });
      }
    }else{
      var container = document.getElementById("feed");
      container.innerHTML = "フィードがありません";
    }
  });
}

google.setOnLoadCallback(initialize);

上記を実際にブラウザ見てみると次のように表示されます。

p2-1

指定したサイトのフィードを検索し、見つかった場合はそのフィードを取得し、フィードに含まれるエントリを画面に表示しています。

( Written by Tatsuo Ikura )