BLOGTIMES
2010/03/14

Google Apps Scriptで超簡易版RSSリーダーを書いてみた

  googleappsscript  rssreader 
このエントリーをはてなブックマークに追加

先日、Google Apps Scriptを調べていて、他サイトからデータを引っ張ってこれることが分かったので、試しにRSSを他サイトから引っ張ってくるスクリプトを書いてみました

XMLの解析にXPathとか使えないので、現状ではXMLの解釈がかなりハードコーディングになってしまっているものの、こんな感じで実装できるんだなぁということは確認できました。そのほかにも、User-Agentが標準で出力されないので、自分のサーバにHTTPコネクションが弾かれたり、日本語の情報がきわめて少なかったりと、色々ハマるポイントは尽きないと思います。

最終的に出来たのは下記のような、スプレッドシートの左上のセル(A1)にRSSのURLを入力して、Fetchボタンを押すとRSSを取得して、A2に以下にタイトル、B2以下にURLを出力するというもの。

超簡易RSSリーダー完成版 - Google Apps Scriptで超簡易版RSSリーダーを書いてみた

以下完成までのメモ。

新しいスプレッドシートを開く

Google Docsで新しいスプレッドシートを開く。
A1のセルにRSSのURLを入力しておく。今回は下記を利用。

http://blog.cles.jp/xml-rss2.php

新しいスプレッドシートを開く - Google Apps Scriptで超簡易版RSSリーダーを書いてみた

スクリプトエディタを開く

メニューの「Tools」->「Scripts」->「Script editor ...」を選択すると、別ウィンドウでスクリプトエディタが開く。
スクリプトエディタを開く - Google Apps Scriptで超簡易版RSSリーダーを書いてみた


スクリプトを入力して保存する

開いたウィンドウに対して下記のコードを入力する。

function getRss() { var ss = SpreadsheetApp.getActiveSheet(); var rssUrl = ss.getRange("A1").getValue(); arguments.callee var advancedArgs = { headers: {"User-Agent":"UrlFetchApp(id="+Utilities.base64Encode(Utilities.computeHmacSha256Signature(Session.getUser().getUserLoginId(),ss.getName()))+")"} }; var rssText = UrlFetchApp.fetch(rssUrl,advancedArgs).getContentText(); var doc = Xml.parse(rssText); var items = doc.getElement().getElement("channel").getElements("item"); var titles = new Array(); var item; for( idx in items ){ entryTitle = items[idx].getElement("title").getText(); entryLink = items[idx].getElement("link").getText(); //Logger.log(items[idx]); //Logger.log(entryTitle); //Logger.log(entryLink); titles.push( [entryTitle, entryLink] ); } var range = ss.getRange(2,1,titles.length,2); range.setValues(titles); }

入力が終わったら、今回はgetRssという名前で保存します。
スクリプトの保存 - Google Apps Scriptで超簡易版RSSリーダーを書いてみた

Fetchボタンを作成する

メニューからいちいちスクリプトを起動するのは面倒なので、ボタンを押したらスクリプトが動作するようにしたいなぁと思ったので、Fetchボタンを作成します。

メニュー「Insert」->「Drawing...」を選択すると、ポップアップ画面が現れます。
ボタンの作成 - Google Apps Scriptで超簡易版RSSリーダーを書いてみた

下記のようにボタンを作成し、右上の「Save & Close」を押してポップアップを閉じます。
ボタンの編集 - Google Apps Scriptで超簡易版RSSリーダーを書いてみた

ボタンとスクリプトを紐付ける

ボタンとスクリプトを紐付けるために、ボタンの左上の▼から「Assign script...」を選択。
ボタンとスクリプトを紐づける - Google Apps Scriptで超簡易版RSSリーダーを書いてみた
ポップアップが現れるので、ここに先ほどのスクリプト名「getRss」を入力します。

完成

Fetchボタンを押すとスクリプトが動いて、スプレッドシートにRSS中のエントリのタイトルと、URLが挿入されます。

完成 - Google Apps Scriptで超簡易版RSSリーダーを書いてみた

A1のセルのURLを書き換えれば、他のサイトのRSSも取得できるはずです。
Nucleus CMS JapanのRSS(http://feeds.feedburner.jp/nucleus_news)についても問題なく取得できました。

コード補完もできるみたい

ちなみにこのスクリプトエディタはある程度コード補完が効きます。Webで使えるEclipseみたいなものも、もうすぐそこまで来ている感じがしました。

コード補完 - Google Apps Scriptで超簡易版RSSリーダーを書いてみた


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3464
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン