読者です 読者をやめる 読者になる 読者になる

☆迷走記☆

練習記録だったり、違ったり。

自動更新Pingはじめました☆はてなブログ to 人気ブログランキング

ブログ Tips

IFTTTのレシピのアイコン

はてなブログPing送信

はてなブログで残念なのはPing送信できない事ですが、この度 IFTTT + Google Apps Script  を使う事で、はてなブログに記事を書いたら自動更新pingを打つ方法を見切ったので紹介します。もちろん無料で利用できる方法です。

 

これで、記事を書く度にブックマークバーに貼った人気ブログランキングpingページを押す必要もありません。

 

また、予約投稿をした時の人気ブログランキングへの反映タイムラグをミニマム化できます。

 

ただ、残念ながら万人向けの方法ではありません。

 

この後に書いている事は、多くの方には宇宙人語に等しいかと思います。

(特に購読してくださっている方、スミマセン。昨日は昨日で変なめしネタでしたし。。。)

 

さらに今回紹介する方法、特に私の作ったスクリプト部分なんかは、自分で言うのも申し訳ないのですが、はっきり言ってやっつけです。

 

日曜にちょっと前に流行ってたIFTTTを使ったら実現できるんじゃね?と思いついて、IFTTTって何?というのを調べる所から始めて日曜日ほぼ一日*1と月曜日の夜を使ってなんとかここまで辿り着いた次第です。

 

ですので、通りすがりの方を含めてどなたか志のある方が華麗にブラッシュアップしてくださると、助かる人が増えるのではないかと思います。 

 

想定読者

  • Excelマクロが組める程度以上のITスキル保有者
  • 分からない事は自分で調べられる情熱と情報リテラシーの保持者

 

実現したい事

 

実現手段概要

 

IFTTT

  • TriggerにはFeed ChannelNew Feed Itemを使用。
  • AcrionにはGoogle Drive ChannelAdd row to spreadsheetを使用。
  • 私の場合は以下のような感じに設定。

IFTTTのレシピでの私の設定値

  • 参考にレシピを公開しました。 *2

IFTTT Recipe: RSSが更新されたらGoogleスプレッドシートに行を足す。 connects feed to google-drive

 

Google スプレッドシート

  • 手でスプレッドシートを新規作成してもかまいませんが、上のIFTTTを発火させたら指定の場所、指定のファイル名でスプレッドシートが新規作成されますので間違いがないでしょう。
  • 以下のように、シートの1行目に、サイトのタイトル、サイトのURL、pingサーバのURLを書くと、この後紹介するスクリプトの流用が容易いかと。

Google スプレッドシートにサイトのタイトル、サイトのURL、pingサーバのURLを書いたサンプル画像

 

Google Apps Script

  • 上記スクリプトの説明。
  • RSSが更新されていたらIFTTTがフィードの内容を元にシートに行を追加してくれるので、指定のPingサーバに更新pingを打つ。
  • 行の追加は最終行のGカラムが空かどうかで判断。
  • 更新pingを打ったら、そのレスポンスをGカラムに格納する。
  • 最初はスプレッドシートが更新されたらGASが発火するようにトリガーを設定していたのだけれど、なぜかうまく発火してくれないので、今は時間起動にしている。
  • トリガーで起動すると getActiveSpreadsheet() がうまく動かないようなので openById() を使っている。*3 *4
  • ブログ更新pingを打つ為のXML-RPCクライアントは ikikko さんの  Mimic-GAS を使わせていただきました。ikikko さん、素晴らしいスクリプトをありがとうございます。

ikikko.hatenablog.com

 

実行結果

  • ちょっと字は読めないと思いますが、実行されるとこのようにシートにログが溜まってゆきます。

Google スプレッドシートに実行ログが溜まっているサンプル画像

  • 人気ブログランキングへの更新Pingの結果は、正常に受け付けられると flerror=false という風に返ってくるようです。

 

本方法の改善ヒント 

  • シートにログが溜まりっぱなしになるので削除する処理が欲しい。
  • トリガー起動でも getActiveSpreadsheet() がうまく動くかどうか、もう一度試してみてもいいかも。
  • 時間起動のトリガーではなくシートが更新されたら発火するトリガーのほうが記事の更新とのタイムラグが少なくなるので、できればうまくいく方法を見つけたい。*5
  • シート更新のトリガーがやっぱりうまく動かなくても、時間起動のトリガーをGUIでの設定ではなく、毎回スクリプト内から次に起動する絶対時刻を設定するようにすればタイムラグは縮められる。

 

その他

  • 最初、はてなブログから更新pingが打てないかなと調べた時に辿り着いたのがこちらのブログ。

moneyreport.hatenablog.com

  • しかしこの記事の最後に書かれているように 、今はPINGOO! に登録しても自動更新はしてくれません。
  • もう無料ユーザのRSSは読んでくれないのかもと思って見切りをつけたのが今回の方法の探索の始まりです。

 

参考記事について

ここに辿り着くのにお世話になった記事の数々です。

本当にありがとうございます。

 

最後に

だいぶん迷ったし、GASの挙動がよくわからないし、疲れました。

もし、この記事をご覧になって試される方がいらっしゃいましたら、ガンバ!!

【2016/05/02 追記】

実際に試されたチャレンジャーな方を紹介します。

marathon.hatenablog.jp

 

【2016/07/27 修正】ブログを引っ越しされたのでリンク先を修正 

 


このブログ、今は何位? →


【参考記事】

はてなブログの無料版を使われている方で、パワーのある方。こんなワザもありますよ。

meisouki.hatenablog.com

 

*1:途中、前回ブログに書いたように賞味期限チキンレースをしていた訳ですが。。。

*2:フィードのURLを消すとエラーになるので公開レシビにもここのURLを入れてます。変更を忘れずに。

*3:今考えるとこの時うまくいかなかったのは上のトリガーが原因だったのかも。

*4:ssIdを変更するのを忘れずに。

*5:時間起動の間隔を短くしてGoogleサーバに負荷をかけるのは憚られる。色んな意味においてGoogle様に目をつけらたくないですよね。

広告を非表示にする

「当ブログは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。」