クロノス・クラウン - 記事検索

クロクロ ショップ 本、ゲーム、同人誌他を販売
クロクロ ツールズ 便利なWebアプリを多数収録
ソフトウェア
めもりーくりーなー Winのメモリーをお掃除するソフト
Novel Supporter 小説推敲補助ソフト
PCソフト 便利なソフトを多数公開
Webサービス 便利で楽しいサービス多数
レトロゲームファクトリー レトロゲーム移植会社のお仕事小説
#電書ハック 電子書籍編集部のお仕事小説
顔貌売人 IT系ミステリ
裏切りのプログラム IT系ミステリ
ゲーム
Little Bit War Switch向け高速RTS
TinyWar high-speed 1ステージ数分の8bit風RTS
EX リバーシ 変形盤面、ステージ多数
PuzzleAndGame.com ブラウザで遊べるパズルやゲーム
同人活動
るてんのお部屋 コミケなどで活動(DL販売
no link
2015年12月02日 15:38:01
 2015年12月2日に「Google Feed API」が「This API is no longer available.」になり、RSSをJSONP形式で簡単に取得することができなくなりました。

 そこで、「Googleスプレッドシート」を使って、RSSを定期取得して、JSONPで吐き出す実験をして、上手くいきましたので、その方法をまとめておきます。

●スプレッドシートの作成

・「Googleドライブ」で「Googleスプレッドシート」を作成する。
・スプレッドシートのタイトルを入力する。

●スクリプトの入力と初回実行

・メニューの[ツール]→[スクリプトエディタ]で、スクリプトエディタを開く。
・以下のコードを入力する。

/*
* プロジェクト名「rss_hatena」
*
* 「はてブ 新着エントリー」からRSSを取得
* 参考:
* gas - Google Apps ScriptでTwitter botを作ってみた - Qiita
* http://qiita.com/abe-perorist/items/2cedc0f577b4f10b4ccb
*/
function myFunction() {
var url = "http://b.hatena.ne.jp/entrylist?sort=hot&threshold=&mode=rss";
clear();
scraiping(url);
}

function clear() {
// シートを扱う準備
var myActiveSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var myActiveSheet = myActiveSpreadSheet.getSheets()[0];

// 取得したurlを全てクリアする
myActiveSheet.clear();
}

function scraiping(url) {
// シートを扱う準備
var myActiveSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var myActiveSheet = myActiveSpreadSheet.getSheets()[0];

// RSSを取得
var response = UrlFetchApp.fetch(url);
var myRegexp = /<item [^>]+>([\s\S]*?)<\/item>/gi;
var match = response.getContentText().match(myRegexp);

// タイトルとURLを抽出してドライブシートに貼り付け
for (var i in match) {
var txt = match[i];
var ttl = "";
var url = "";
try {
ttl = txt.match(/<title>([\s\S]+?)<\/title>/)[1];
url = txt.match(/rdf:about="(.+?)"/)[1];
} catch(e) {}
myActiveSheet.getRange(myActiveSheet.getLastRow()+1, 1).setValue(ttl);
myActiveSheet.getRange(myActiveSheet.getLastRow(), 2).setValue(url);
}
}

・[Ctrl+S]で保存。プロジェクト名は「rss_hatena」にして[OK]ボタンを押す。
・[右三角](実行)ボタンを押す。
・「承認が必要です」とダイアログが出るので[続行]ボタンを押す。
・[許可]ボタンを押す。(外部との連携のために、最初の1回は承認が必要)

●スクリプトの定期実行

・「時計マーク」(現在のプロジェクトのトリガー)を押す。
・「現在のプロジェクトのトリガー」と出るので、「トリガーが設定されていません。今すぐ追加するにはここをクリックしてください。」リンクを押す。
・[実行]は「myFunction」、[イベント]は[時間主導型][分タイマー][30分ごと]を選ぶ。
・[保存]ボタンを押す。

●スプレッドシートをJSON形式で外部に公開

・スプレッドシートのページに戻る。
・メニューの[ファイル]→[ウェブに公開]を押す。
・「ウェブに公開」ダイアログが表示されるので、[公開]ボタンを押す。
・リンクが選択状態になって表示されるのでコピーする。
・「https://docs.google.com/spreadsheets/d/[key]/pubhtml」の「[key]」の部分をコピーする。
・「https://spreadsheets.google.com/feeds/cells/[key]/od6/public/values?alt=json」の「[key]」の部分をに貼り付ける。
・このURLがJSON形式(JSONP対応)の外部URLになる。

●jQueryで読み込む

・以下のコードを実行すれば、「[{title: "hoge", link: "hoge"}, {…}, {…}, …]」形式の「dArr」を得ることができる。

var url = "上記で作成したURL";
$.getJSON(url, function(data) {
try {
var dArr = [];
$.each(data.feed.entry, function(i, x) {
var pos = i / 2 | 0;
if (i % 2 == 0) {
dArr[pos] = {};
dArr[pos].title = x.content.$t;
} else {
dArr[pos].link = x.content.$t;
}
});
} catch(e) {
console.log("rss load", e);
}
});

●実行サンプル

Routine News

●参考

GoogleスプレッドシートのデータをJSONで取得してみた | アライドアーキテクツのクリエイターブログ
gas - Google Apps ScriptでTwitter botを作ってみた - Qiita

最新20件 (全て見る)

柳井が執筆した本や商品

Web小説のための Novel Supporterで 超効率的に文章推敲する本
推敲箇所を可視化するソフトを使い、実際の小説の推敲手順を示した本。詳細ページ
レトロゲームファクトリー
過去のゲームを最新機用に移植する会社のお仕事小説。新潮社より発売中。詳細ページ
#電書ハック
電子書籍編集部のお仕事小説。文藝春秋より発売中。詳細ページ
顔貌売人 ハッカー探偵 鹿敷堂桂馬
シリーズ第2弾。文藝春秋より発売中。詳細ページ
裏切りのプログラム ハッカー探偵 鹿敷堂桂馬
松本清張賞の最終候補に残った拙作小説(デビュー作)。詳細ページ
JavaScriptでリバーシゲームをつくろう
ライブラリを使わず、全コードを書いて、リバーシゲームを作るまでを徹底解説。詳細ページ
HTML5とJavaScriptで作る落ち物パズルゲーム 全コード
『テトリス』や『ぷよぷよ』に類似した落ち物パズルの全コードを掲載して解説した本。詳細ページ
レトロ風RPGフルスクラッチ開発 全コード
レトロゲーム風RPGの全コードを掲載して解説した本。詳細ページ

柳井が作成した動画講座