すごいどうでもいいんですが。
はてなブログってIFTTTに対応してないんですよね
自動化したいけど、IFTTT未対応。それならGASでスクリプトを書けば良いのでは。そう思い立ってスクリプトを書いてみました。
相変わらずのクソコードをお許し下さい。
var rssHatena = "http://relativelayout.hatenablog.com/rss"; var sheetId = "(Google SpreadsheetのID)"; var iftttUrl = "(IFTTTのURL)"; function checkHatena() { var lastPost = getLastPost(rssHatena); var lastPostGuid = getGuid(lastPost); var savedPostGuid = getGuidOnSheet('hatena'); if(lastPostGuid == savedPostGuid){ return; } triggerIfttt(getTitle(lastPost), getLink(lastPost)); setGuidOnSheet('hatena', lastPostGuid); } function getLastPost(url){ var xml = XmlService.parse(UrlFetchApp.fetch(url).getContentText()); var root = xml.getRootElement(); var channel = root.getChildren('channel'); var items = channel[0].getChildren('item'); return items[0]; } function getGuid(post){ return post.getChildren('guid')[0].getValue(); } function getLink(post){ return post.getChildren('link')[0].getValue(); } function getTitle(post){ return post.getChildren('title')[0].getValue(); } function getGuidOnSheet(sheetName){ var spreadsheet = SpreadsheetApp.openById(sheetId); var sheet = spreadsheet.getSheetByName(sheetName); var data = sheet.getSheetValues(1, 1, 1, sheet.getLastColumn()); return data[0][0]; } function setGuidOnSheet(sheetName, guid){ var spreadsheet = SpreadsheetApp.openById(sheetId); var sheet = spreadsheet.getSheetByName(sheetName); var array = [guid]; sheet.clear(); sheet.appendRow(array); } function triggerIfttt(title, link){ var payload = { "value1" : title, "value2" : link }; var options = { "method" : "post", "payload" : payload }; UrlFetchApp.fetch(iftttUrl, options); }
ざっくり言うと、RSSの最新投稿のGUIDをSpreadsheetに保存しておく。定期的にRSSの最新投稿のGUIDをチェックして、保存しているGUIDと違ったら新しい投稿があったと判断して、IFTTTにHTTP POSTをするというもの。こんなんで良いのかな・・・。