FilterRSS
概要
Google SpreadSheetに取得したいRSS/ATOM(フィード)のURLとフィルター設定を記述する事で、RSSのフィルターが出来るScriptです。
Yahoo! Pipesがサービス終了してしまったので、代わりになるアプリとして作ってみました。
スクリプト本体とログ、設定を記述するファイル(SpreadSheet)が分かれているので比較的簡単に設定が可能です。
出来ること、出来ないこと
※2015年10月20日現在。
※現状出来ない機能については、今後実装するかもしれないし、しないかもしれません。(あまり期待しないでください)
出来ること
スクリプトの利用者がフィードの種別(RSS1.0/RSS2.0/ATOM)の種別を気にせずにフイードとして読み込み出来ること
読み込んだフイードのitem/entryに定義されている任意の内容(Value)および、属性値に対してフィルター設定(出力する/しない)が行えること
出来ないこと
複数のフィードを1つにまとめること
フィードそのもののtitle、link、descriptionなどの内容を取得、書き換え、削除すること
重複しているitem/entryの出力を1つに絞ること
item/entry内に定義されている内容の書き換え、削除をすること
動作サンプル
2022年9月8日以前のバージョン(Ver. 1.0.0)を利用していてエラーで動かなかった方へ
スクリプトの仕様変更で以前のバージョンが動かなくなっていました。ご不便おかけしてしまいすみません。
以下の方法で修正が可能です。
既存のスクリプトを修正して利用する方法
Google DriveでFilterRSSを開きます
286行目の「ContentService.MimeType.RSS」を「ContentService.MimeType.TEXT」に書き換えます
「実行」ボタン左の「保存」ボタンを押し、プロジェクトを保存します
「デプロイ」ボタンを押し、「新しいデプロイ」を選択します
確認画面が出るので「デプロイ」を押します
ウェブアプリ URLの下の「コピー」をクリックしURLをコピーしてメモ帳などに控えます
6.で控えたURLの後ろに「?page=(以前のバージョンのFileterRSSで利用していたシート名)」を付けてご利用のRSSリーダーに追加登録してください
使い方 -初期設定-
Google DriveでSpreadSheetを新規作成します。
作成したSpreadSheetに「Log」シートを作成します(既存のシート1の名前変更でもOK)
作成したSpreadSheetのID(ブラウザで表示されているURLの"spreadsheets/d/"~"/edit"の~部分)をメモ帳などにコピーして控えます
こちらのスクリプトを開き、「ファイル」→「コピーを作成」で自分のGoogle Driveに保存します
保存したスクリプトの「// var ssID='ここにSpreadSheetのIDを入力してください'」の『ここにSpreadSheetのIDを入力してください』部分に3.で控えたSpreadSheetのIDを記載し、行頭の「//」を削除します
スクリプト編集画面の上にある「関数を選択」をクリックして「setUp」に切り替えた後、左の再生(右向きの三角ボタン)をクリックします
「認証が必要です」というポップアップが出るので、「Googleドライブ上のスプレッドシートの参照」と「外部サービスへの接続」に対して「許可」をクリックします
設定に問題が無ければ特にエラーも出ずに終了しますので、スクリプト編集画面のメニューから「表示」→「ログ」を選択して、「初期設定確認が完了しました」というメッセージが出ている事を確認してください
1.で作成したSpreadSheetを見ると「Log」シートに青字で使い方が書かれていますので確認してください
使い方 -初期設定後のチェック対象RSSの追加-
SpreadSheetに新しいシートを追加します
追加したシートのA1セルにチェックしたいRSSのURLを入力します
B1セルには条件に当てはまらなかったアイテムに対するフィルター動作(出力させたいときは TRUE 出力させない時は FALSE)を入力します
2行目以降にはフィルター設定を入力します
A列にはフィルター対象のxml名(link,titleなど)を入力します
B列にはxml名の内容(xml名がtitleの場合、<title>~</title>の~部分)に対するフィルター条件を入力します (内容に対してチェックを行わない場合空欄でOKです)
C列にはxml要素の名前を入力します (要素に対してチェックを行わない場合は空欄にしてください)
D列にはxml要素の内容に対するフィルター条件を入力します (要素に対してチェックを行わない場合は空欄にしてください)
E列には条件に当てはまったときのフィルター動作(出力させたいときは TRUE 出力させない時は FALSE)を入力します
フィルターの設定例はこちらのサンプルSpreadSheetを参考にしてください
フィルターの設定が完了したらシートを任意の名前で保存します
※日本語のシート名には対応していません。
(正確にはUTF-8をURLエンコードしたリクエストならば日本語のシート名でも対応できますが、他の文字コードでリクエストを送信するとエラーになります)
ブラウザをスクリプトの編集画面に切り替えてファイルを保存し、「公開」 → 「Webアプリケーションとして導入」を選択します
プロジェクトバージョンを「新規作成」に、次のユーザーとしてアプリケーションを実行を「自分」に、アプリケーションにアクセスできるユーザーを「全員 (匿名ユーザーを含む)」に変更した後、「導入」をクリックします
少し待つと『このプロジェクトをウェブアプリケーションとして導入しました』というメッセージが出るので、メッセージの下にある現在のウェブアプリケーションのURL欄に記載されているURLをコピーしてメモ帳などに控えます
14.で控えたURLにブラウザからアクセスしてください。「引数が正しくありません」と表示されれば正常です
14.で控えたURLの後ろに「?page=(11.で設定したスプレッドシートのシート名)」を追記してください
16.で追記したURLにアクセスしてください。RSSが出力されます
16.で追記したURLをRSSリーダーに登録して利用できます
チェック対象のRSSを追加したい場合は、手順の1.~11.を実行した後、14.で控えたURLに「?page=(手順11.で追加したシート名)」をRSSリーダーに追加登録する事で利用できます
当スクリプトに関する問い合わせ先
Googleサイトにコメント欄やメールフォームを埋め込む方法がわからないので、当面はblogのコメント欄で受け付けます
こういった使い方は出来ないのか?
こんなエラーが出て動かない
などといったことがありましたら当該エントリーのコメント欄にコメントをお願いします
なお、頂いたコメントには目を通しますが、すべてのコメントに対して返信を行うことを確約するものではありませんので、あしからずご了承下さい。
更新履歴
2015/10/20 公開スタート
2020/09/11 動作サンプルの実行権限が無くなっていたので再設定を実施
2022/09/08 MimeTypeのClassからRSSが削除されていたためスクリプトを修正
注意事項・著作権表示・ライセンス
Logシートに追記されるログはたまり続けるので手動で削除するか、setUp関数を実行してクリアしてください。
Logシートに追記されるログのサイズがSpreadSheetの制限を超えるとスクリプトが動かなくなります。その場合はLogシートを削除して作り直してください。
(2016/12/25 追記)
copyright 2015 ほりさん
このスクリプトのライセンスはGNUアフェロ一般公衆ライセンス(AGPL)v3が適用されます。