キーワードに一致するフィードを検索

広告

Google AJAX Feed APIを使い、指定したキーワードに一致するフィードを検索する方法について解説します。

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

google.feeds.findFeedsメソッドはグローバルメソッドとして用意されているメソッドであり、引数に検索したいキーワードを指定して呼び出すことでキーワードに一致するフィードのリストを取得することができます。

google.feeds.findFeeds(query, callback);

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

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

google.feeds.findFeeds("キーワード", dispfeed);

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

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

google.feeds.findFeeds("キーワード", function (result){
  /* ... */
});

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

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

error?
entries[]

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

「entries」プロパティの値は指定されたキーワードに一致した最大 10 件のフィードのリストが含まれます。詳細は次のページで確認します。

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

google.feeds.findFeeds("キーワード", function (result){
  if (!result.error){
    // エラーが発生していない場合の処理
    if (result.entries.length > 0) {
      // 一致したフィードが1個以上あった場合の処理
    }
  }
});

キーワードに一致したフィードが1個以上見つかった場合、entries[] プロパティの値の中にフィードのリストが含まれています。entries[] プロパティの値は次のような構成となっています。

entries[]
  title
  link
  contentSnippet
  url

それぞれの値の意味は次の通りです。

プロパティ説明
titleフィード タイトル
linkHサイトのURL
contentSnippet概要
urlフィードのURL

「title」はフィードの元になっているサイトやブログのタイトル、「link」はサイトのURL、「url」はフィードのURLを表します。「contentSnippet」は何を持ってきているのか分かりませんでした。

例えば次のように記述することでフィード毎の各値を取得できます。

google.feeds.findFeeds("キーワード", function (result){
  if (!result.error){
    // エラーが発生していない場合の処理
    if (result.entries.length > 0) {
      for (var i = 0; i < result.entries.length; i++) {
        var title =  result.entries[i].title;
        var link =  result.entries[i].link;
        var contentSnippet =  result.entries[i].contentSnippet;
        var url =  result.entries[i].url;
      }
    }
  }
});

これで指定したキーワードに一致するフィードに関する情報を取得することができます。フィードのURLも取得できますので、FeedクラスやFeedControlクラスを使うことでフィード毎のエントリに関する情報を取得することもできます。

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

<!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/script1_1.js"></script>

</head>
<body>

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

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

function initialize() {
  google.feeds.findFeeds("Google", function (result){
    if (!result.error && result.entries.length > 0){
      var container = document.getElementById("feed");

      var htmlstr = "";
      for (var i = 0; i < result.entries.length; i++) {
        var entry = result.entries[i];
        htmlstr += "<h2>" + entry.title + "</h2>";
        htmlstr += "<p>URL : " + entry.link + "</p>";
        htmlstr += "<p>Feed URL : " + entry.url + "</p>";
        htmlstr += "<p>" + entry.contentSnippet + "</p>";
      }

      container.innerHTML = htmlstr;
    }
  });
}

google.setOnLoadCallback(initialize);

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

p1-1

キーワードに一致素フィードの一覧を取得することができました。

( Written by Tatsuo Ikura )