Google Feed APIが終了。結果、SpreadSheetにしたよ。
Google Feed APIが終了っぽくて騒いでますね。
朝、お客様から電話で「ブログのリンクが出てませんけど〜」って。
調べたら廃止予定だったらしい(知らんかった
とりあえず、早急に直さねば。ってことで、
http://rss2json.com/
を見つけて対応。
でもなぁ、いつ終わるかわからないサービスだし心配だなぁと。
まぁその時で別の手考えるか。で終わり。
夕方、twitterで話題になってるかなーって検索すると、みんな困ってる様子。
https://twitter.com/search?f=tweets&q=google%20feed%20api
その中に、おもしろいのを発見。
ちょっと不便だったので、実験して書きました。様子見中。→ 「Google Feed API」代替として「Googleスプレッドシート」を使う方法 https://t.co/BY5pJFobtO
— 柳井 政和 (@ruten) 2015, 12月 2
Spreadsheetを使う手!なるほど!
日付とかも取得したいし、rdfなrssだったので、いろいろいじってみました。
いろいろ参考にし、試行錯誤のが以下になります。
function scraiping(url) {
var myActiveSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var myActiveSheet = myActiveSpreadSheet.getSheets()[0];
//ここでkey宣言
//この部分が後のJSで「gsx$****.$t」で簡単取得できる
myActiveSheet.getRange(myActiveSheet.getLastRow()+1, 1).setValue("date");
myActiveSheet.getRange(myActiveSheet.getLastRow(), 2).setValue("title");
myActiveSheet.getRange(myActiveSheet.getLastRow(), 3).setValue("url");
var response = UrlFetchApp.fetch(url);
var myRegexp = /<item [^>]+>([\s\S]*?)<\/item>/gi;
var match = response.getContentText().match(myRegexp);
for (var i in match) {
var txt = match[i];
var ttl = txt.match(/<title>(.+?)<\/title>/)[1];
var date = txt.match(/<dc:date>(.+?)<\/dc:date>/)[1];
var url = txt.match(/rdf:about="(.+?)"/)[1];
myActiveSheet.getRange(myActiveSheet.getLastRow()+1, 1).setValue(date);
myActiveSheet.getRange(myActiveSheet.getLastRow(), 2).setValue(ttl);
myActiveSheet.getRange(myActiveSheet.getLastRow(), 3).setValue(url);
}
}
※AppScripytはよくわからないもっと簡単にできるかも
jsonのURLは
https://spreadsheets.google.com/feeds/list/ *** key *** /od6/public/values?alt=json
※注意:[feeds/cells]ではなく[feeds/list]にしています
$.ajax({
type: "GET",
dataType: 'json',
url: [spreadsheetsのURL]
}).done(function(json){
for(var i=0;i<json.feed.entry.length;i++){
var entry = json.feed.entry[i];
//ここで簡単取得
var date = entry.gsx$date.$t;
var title = entry.gsx$title.$t;
var url = entry.gsx$url.$t;
//ここからごにょごにょ
}
});
以上。