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

おすすめ
自作の本やゲーム他を販売
便利なWebアプリが多数
ソフトウェア
めもりーくりーなー Winのメモリーを掃除
Novel Supporter 小説推敲補助ソフト
PCソフト まとめ
ゲームブック
闇の聖杯の儀式 電書のゲームブック
ゲーム
Little Land War... Win向けSRPG
Little Bit War Switch向け高速RTS
TinyWar... 1面数分の8bit風RTS
EX リバーシ 変形盤面、盤面多数
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件 (全て見る)

オススメ電書 (全て見る

動画講座 (全て見る

サイト目次

おすすめ

PCソフト/Webアプリ

ゲーム

マンガ

記事

柳井の同人活動

開発

携帯・スマホ

アナログ・ゲーム

Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2024 Cronus Crown (c)1997-2024 Masakazu Yanai
ご意見・お問い合わせはサイト情報 弊社への連絡までお願いします
個人情報の取り扱い、利用者情報の外部送信について