piayo's blog

はっさみYO! 沖縄でまったりWeb制作

Google Feed APIが終了。結果、SpreadSheetにしたよ。

 

Google Feed APIが終了っぽくて騒いでますね。
朝、お客様から電話で「ブログのリンクが出てませんけど〜」って。
調べたら廃止予定だったらしい(知らんかった

とりあえず、早急に直さねば。ってことで、
http://rss2json.com/
を見つけて対応。
でもなぁ、いつ終わるかわからないサービスだし心配だなぁと。
まぁその時で別の手考えるか。で終わり。

夕方、twitterで話題になってるかなーって検索すると、みんな困ってる様子。

https://twitter.com/search?f=tweets&q=google%20feed%20api


その中に、おもしろいのを発見。

crocro.com

 Spreadsheetを使う手!なるほど!

日付とかも取得したいし、rdfrssだったので、いろいろいじってみました。
いろいろ参考にし、試行錯誤のが以下になります。

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;
        //ここからごにょごにょ
    }
});

以上。