WordPressの更新通知をGoogle Apps Scriptで受け取る

wordpressからの更新通知を自動的にgoogleスプレッドシートなどに保存したいと思い、ちょっとやってみました。

wordpress等のブログサービスの更新を通知する方法としてweblogUpdates.pingがあります。これはXML-RPCで定義された通知用のXMLを検索サービス等に通知するものです。これをgasで受けとり処理することでブログの更新を自動的にスプレッドシートに反映することを考えます。

weblogUpdates.pingの受け取り

最初に、wordpressから送信されるpingをgasで受け取る必要があります。
gasでは、作成したスクリプトをウェブアプリケーションとして公開する際に、getメソッドに対する応答、postメソッドに対する応答をそれぞれdoGet,doPost関数として定義する事ができます。

今回はPOSTなので、doPostとして以下の様なコードを作成することで、送られて来たpingのタイトル、URL、RSSフィードのURLが取得可能です。

受け取ったRSSフィードURLから更新部分を取得する

上記のpingは、あくまで更新の通知のみなので、更新内容を得るためには、送られて来たURLのフィードを解析する必要があります。

今回は上記の関数のfeedを渡す想定で、そのブログの最新の記事のタイトルとそのURLを取得するコードを以下に記載します。

最後にこのコードを作成したgasをウェブアプリケーションとして公開して、そのURLをwordpressのping送信先に追加すれば、完了です。
この時注意が必要な点として、送信するwordpressはgoogleから見れば、そのユーザとは無関係の第3者なので、公開時は「全員(匿名ユーザを含む)」設定で公開する必要があります。そのため、実際の更新の際に特定のURLのフィードしか使わないのであれば、doPost内でそのURL以外を弾く処理等を加えておいたほうが良いと思います。

これらを使うことで、wordpressの更新のたびに自動的に通知がGASに送られ、通知を受け取ったGASはそこからRSSを解析、最新記事の情報を自動で処理することが出来ます。

ただし、実際に動作させる際の問題として、RSSフィードにキャッシュが効いている場合、通知時にフィードを読んだ際にまだ最新の記事が追加されていない可能性があります。そのため、取得まで時間をとることや更新時にキャッシュを削除する等の対応が必用です。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>