自動更新Pingはじめました☆はてなブログ to 人気ブログランキング
- はてなブログでPing送信
- 想定読者
- 実現したい事
- 実現手段概要
- IFTTT
- Google スプレッドシート
- Google Apps Script
- 実行結果
- 本方法の改善ヒント
- その他
- 参考記事について
- 最後に
はてなブログでPing送信
はてなブログで残念なのはPing送信できない事ですが、この度 IFTTT + Google Apps Script を使う事で、はてなブログに記事を書いたら自動で更新pingを打つ方法を見切ったので紹介します。もちろん無料で利用できる方法です。
これで、記事を書く度にブックマークバーに貼った人気ブログランキングのpingページを押す必要もありません。
また、予約投稿をした時の人気ブログランキングへの反映タイムラグをミニマム化できます。
ただ、残念ながら万人向けの方法ではありません。
この後に書いている事は、多くの方には宇宙人語に等しいかと思います。
(特に購読してくださっている方、スミマセン。昨日は昨日で変なめしネタでしたし。。。)
さらに今回紹介する方法、特に私の作ったスクリプト部分なんかは、自分で言うのも申し訳ないのですが、はっきり言ってやっつけです。
日曜にちょっと前に流行ってたIFTTTを使ったら実現できるんじゃね?と思いついて、IFTTTって何?というのを調べる所から始めて日曜日ほぼ一日*1と月曜日の夜を使ってなんとかここまで辿り着いた次第です。
ですので、通りすがりの方を含めてどなたか志のある方が華麗にブラッシュアップしてくださると、助かる人が増えるのではないかと思います。
想定読者
実現したい事
実現手段概要
- IFTTTで、はてなブログのRSSをトリガーにして更新されてたらGoogle スプレッドシートに1行追加する。
- Google Apps Script で上記イベントを拾ってXML-RPCでブログ更新pingを打つ。
IFTTT
- TriggerにはFeed ChannelのNew Feed Itemを使用。
- AcrionにはGoogle Drive ChannelのAdd row to spreadsheetを使用。
- 私の場合は以下のような感じに設定。
- 参考にレシピを公開しました。 *2
Google スプレッドシート
- 手でスプレッドシートを新規作成してもかまいませんが、上のIFTTTを発火させたら指定の場所、指定のファイル名でスプレッドシートが新規作成されますので間違いがないでしょう。
- 以下のように、シートの1行目に、サイトのタイトル、サイトのURL、pingサーバのURLを書くと、この後紹介するスクリプトの流用が容易いかと。
Google Apps Script
- 上記のスプレッドシートに対して Google Apps Script (以下 GAS)を記述する。
- 以下は私の書いたスクリプト。
- 上記スクリプトの説明。
- RSSが更新されていたらIFTTTがフィードの内容を元にシートに行を追加してくれるので、指定のPingサーバに更新pingを打つ。
- 行の追加は最終行のGカラムが空かどうかで判断。
- 更新pingを打ったら、そのレスポンスをGカラムに格納する。
- 最初はスプレッドシートが更新されたらGASが発火するようにトリガーを設定していたのだけれど、なぜかうまく発火してくれないので、今は時間起動にしている。
- トリガーで起動すると getActiveSpreadsheet() がうまく動かないようなので openById() を使っている。*3 *4
- ブログ更新pingを打つ為のXML-RPCクライアントは ikikko さんの Mimic-GAS を使わせていただきました。ikikko さん、素晴らしいスクリプトをありがとうございます。
- 上記の私のスクリプトに Mimic-GAS をコピペしてガッチャンコするもよし、いやいやエンジニアとしてライブラリ管理はちゃんとしようよ、という方はこちらのブログが参考になるかもです。
[Google Apps Script] GoogleスプレッドシートからFC2ブログへ投稿する | kenlog
実行結果
- ちょっと字は読めないと思いますが、実行されるとこのようにシートにログが溜まってゆきます。
本方法の改善ヒント
- シートにログが溜まりっぱなしになるので削除する処理が欲しい。
- トリガー起動でも getActiveSpreadsheet() がうまく動くかどうか、もう一度試してみてもいいかも。
- 時間起動のトリガーではなくシートが更新されたら発火するトリガーのほうが記事の更新とのタイムラグが少なくなるので、できればうまくいく方法を見つけたい。*5
- シート更新のトリガーがやっぱりうまく動かなくても、時間起動のトリガーをGUIでの設定ではなく、毎回スクリプト内から次に起動する絶対時刻を設定するようにすればタイムラグは縮められる。
その他
- しかしこの記事の最後に書かれているように 、今はPINGOO! に登録しても自動更新はしてくれません。
- もう無料ユーザのRSSは読んでくれないのかもと思って見切りをつけたのが今回の方法の探索の始まりです。
参考記事について
ここに辿り着くのにお世話になった記事の数々です。
本当にありがとうございます。
- 更新pingの仕組み|マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~
http://piyopiyocs.blog115.fc2.com/blog-entry-495.html -
PING送信の仕様 - XMLの書式、RSS配信、PINGサーバとは、ブログ・ホームページ
http://memorva.jp/memo/website/rss_ping.php -
ajaxで更新Ping通知できるか試してみた結果 - 水菜巻のメモ的ななにか。
http://mizna.hatenablog.com/entry/2015/03/04/232303 -
pingの戻り値 - あ〜そうかいと言わないで | hippos-lab::blog
http://hippos-lab.com/blog/node/52
最後に
だいぶん迷ったし、GASの挙動がよくわからないし、疲れました。
もし、この記事をご覧になって試される方がいらっしゃいましたら、ガンバ!!
【2016/05/02 追記】
実際に試されたチャレンジャーな方を紹介します。
【2016/07/27 修正】ブログを引っ越しされたのでリンク先を修正
【参考記事】
はてなブログの無料版を使われている方で、パワーのある方。こんなワザもありますよ。