フィードの取得

広告

色々なサイトやブログではフィードを配信しています。Google AJAX Feed APIを使用することで任意のサイトが配信しているフィードを取得することが可能になります。ここではフィードの取得方法について解説します。

1.google.feeds.Feedクラス
2.取得したフィードの処理
3.サンプル

フィードを取得するにはgoogle.feeds.Feedクラスを使用します。次のコンストラクタを使ってFeedクラスのオブジェクトを作成して下さい。

google.feeds.Feed(url)

引数には取得したフィードのURLを指定します。

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

var feed = new google.feeds.Feed("http://googlejapan.blogspot.com/atom.xml");

次にフィードの取得を行うにはFeedクラスで用意されている「load」メソッドを使います。

load(callbackFunction)

引数には取得が完了した後に呼び出される関数名を指定します。

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

var feed = new google.feeds.Feed("http://googlejapan.blogspot.com/atom.xml");
feed.load(dispfeed);

function dispfeed(result){
  // 実行される処理
}

呼び出される関数をまとめて次のようにも記述できます。関数が呼び出されるのは通常一度だけなので、こちらの記述の方がよく使われるかと思います。

var feed = new google.feeds.Feed("http://googlejapan.blogspot.com/atom.xml");
feed.load(function(result){
  // 実行される処理
});

関数が呼び出される時、引数に取得したフィードに関するデータが含まれるオブジェクトが渡されてきます。このオブジェクトには次の情報が含まれています。

error?
xmlDocument?
feed?

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

「xmlDocument」プロパティの値は結果をXML形式で取得した場合に含まれます。

「feed」プロパティの値は結果をJSON形式で取得した場合に含まれます。デフォルトはJSON形式となっています。

エラーが発生していないかどうか確認し、発生していない場合は取得した形式に合わせて処理を行います。例えば次のように記述します。

var feed = new google.feeds.Feed("http://googlejapan.blogspot.com/atom.xml");
feed.load(function(result){
  if (!result.error){
    // エラーが発生していない場合の処理
  }
});

フィードの中身を処理する方法については次のページで解説します。ここではエラー処理に関する簡単なサンプルを試してみます。

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

<!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>

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

function initialize(){
  var feedurl = "http://googlejapan.blogspot.com/atom.xml";
  var feed = new google.feeds.Feed(feedurl);
  feed.load(function(result){
    if (!result.error){
       alert("成功");
    }else{
       alert(result.error.code + " : " + result.error.message);
    }
  });
}

google.setOnLoadCallback(initialize);

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

p2-1

今回は実際に存在するフィードのURLを指定し、取得も問題がなかったのでエラーにはなりませんでした。

では今度は存在しないフィードのURLを指定した場合のサンプルです。

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

</head>
<body>

<p>Google AJAX Feed API テスト</p>

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

function initialize(){
  var feedurl = "http://www.example.com/atom.xml";
  var feed = new google.feeds.Feed(feedurl);
  feed.load(function(result){
    if (!result.error){
       alert("成功");
    }else{
       alert(result.error.code + " : " + result.error.message);
    }
  });
}

google.setOnLoadCallback(initialize);

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

p2-2

今回は実際に存在するフィードのURLを指定し、取得も問題がなかったのでエラーにはなりませんでした。

( Written by Tatsuo Ikura )