Google AJAX Feed API を使ってJavaScriptでサイトにRSSフィードを表示する方法

JavaScriptで別ドメインのRSSを読み込んでくるのは、
セキュリティの関連上できないって聞いていた・・・
あきらめていたのですが、
GoogleのAPIに別ドメインでも読み込めのがあったのですね!
使うのも比較的簡単そうなので、
とりあえず試しに使ってみる事にしました。
Google AJAX Feed API
↑これは既にこのサイトのRSSをAPIを使って読み込んだ結果です。
Google AJAX Feed APIを使えば比較的簡単に
RSSをサイトに表示することができるようです。
このサービスを利用するときに、APIキーを取得するのですが、
その時に、既にサンプルのソースを表示してくれます
その表示されたサンプルは以下の通りです。
■サンプルソース
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type"
content="text/html; charset=utf-8"/>
<title>Google AJAX Feed API - Simple Example</title>
<script type="text/javascript" src="■APIキー"></script>
<script type="text/javascript">
google.load("feeds", "1");
function initialize() {
var feed = new google.feeds.Feed
("http://www.digg.com/rss/index.xml");
feed.load(function(result) {
if (!result.error) {
var container = document.getElementById("feed");
for (var i = 0; i < result.feed.entries.length; i++) {
var entry = result.feed.entries[i];
var div = document.createElement("div");
div.appendChild(document.createTextNode(entry.title));
container.appendChild(div);
}
}
});
}
google.setOnLoadCallback(initialize);
</script>
</head>
<body>
<div id="feed"></div>
</body>
</html>
■ HTMLソース
<div id="feed"></div>
上記のままだと、拾ってきたRSSは4つしか表示されなかったり、
単にタイトルとかしか表示されないようになっています。
せめてタイトルにリンクをつけたり、
表示させる数を増やしたいので、少しScript部分を変更してみようと思います。
編集してみる
編集後のソースは以下のようにしてみました。
google.load("feeds", "1");
function initialize() {
//RSSフィードの取得
var feed = new google.feeds.Feed("Feed URL");
//取得するフィード数
feed.setNumEntries(10);
//実際に読む込む
feed.load(function(result) {
//読み込めたか判別
if (!result.error) {
//表示部分を選択
var container = document.getElementById("feed");
//変数の初期化
var useFeed = "";
//Feedの処理
for (var i = 0; i < result.feed.entries.length; i++) {
//Feedを一つ抽出
var entry = result.feed.entries[i];
//リストに突っ込む
useFeed +=
'<li><a href="' + entry.link + '">' + entry.title + '</a>';
}
//リストを表示させる
container.innerHTML = '<ul>' + useFeed + '</ul>';
}
});
}
google.setOnLoadCallback(initialize);
Feed URL部分に表示させたいRSSのURLを記入。
7,8行目に書いてあるようにfeed.setNumEntries(数字);を書き入れることで、
表示させる件数を調節することができます。
上記のサンプルは10にしてみました。
jQueryを使って簡単にしてみる。
上のようなままよりも、せっかくjQueryを導入しているので、
使える部分はjQueryの形にしてしまおうと思います。
■ 設定ソース
google.load("feeds", "1");
$(function() {
//RSSフィードの取得
var feed = new google.feeds.Feed("Feed URL");
//取得するフィード数
feed.setNumEntries(10);
//実際に読む込む
feed.load(function(result) {
//読み込めたか判別
if (!result.error) {
//変数の初期化
var useFeed = "";
//Feedの処理
for (var i = 0; i < result.feed.entries.length; i++) {
//Feedを一つ抽出
var entry = result.feed.entries[i];
//リストに突っ込む
useFeed +=
'<li><a href="' + entry.link + '">' + entry.title + '</a>';
}
//リストを表示させる
$("div#feed").html('<ul>' + useFeed + '</ul>');
}
});
});
ちょっとだけソースが簡単になった!
もう少し応用的なのを作ってみた
プレビュー(本文付き)
一番最初に表示したサンプルはタイトルとリンクのみでしたが、
これで本文が表示されるようになりました。
entry.contentSnippetを加えるだけで表示されます。
ただ、これはHTMLを除いた冒頭の文章のみになっています。
読み込んできたエントリー本文をHTML形式のまま全体を表示させる方法もあって、
entry.contentで全文表示になります。
ただし、著作権の問題などもあるので、この方法はおすすめしません。
いずれにせよ、読み込みたいRSSは許可を得ておくか、
自分のブログにするかにしておいた方が無難だと思います。
ちょっと注意
今回のサンプルはソース部分だけを編集したので他は省略しています。
APIキー部分は読み込み忘れの無いようにしてくださいね。
おまけ
■ コメント部分抜きソース
google.load("feeds", "1");
$(function() {
var feed = new google.feeds.Feed("Feed URL");
feed.setNumEntries(10);
feed.load(function(result) {
if (!result.error) {
var useFeed = "";
for (var i = 0; i < result.feed.entries.length; i++) {
var entry = result.feed.entries[i];
useFeed +=
'<li><a href="' + entry.link + '">' + entry.title + '</a>';
}
$("div#feed").html('- ' + useFeed + '
