タグ「xml-rpc」が付けられているもの

MTのスケジュールタスク機能は、指定日投稿のほかにも公開キューによる再構築や迷惑コメント・トラックバックの削除、不要になったセッションやテンポラリファイルの削除など重要な処理を行っています(弊社でもいくつかのプラグインでスケジュールタスクを利用しています)。
MTの機能をフルに活用したいのであれば、この機能は可能な限り設定するべきです。

MTのスケジュールタスクを実行する方法として、もっとも一般的な対応はMTが動作しているサーバー上で、MTに含まれるスクリプト run-periodic-tasks を定期的に実行する方法ですが、定期的な実行を行うためには cron や Windows タスク・スケジューラ の設定が必要であり、利用するサーバーによってはこの設定を行うことができずに、スケジュールタスク機能を設定しないまま利用されている方もいらっしゃるのではないかと思います。

MTでは、サーバー上で run-periodic-tasks を実行できない場合の代替策として

指定日投稿や公開キュー等のスケジュール処理の設定 | Movable Type 4 ドキュメント
に書いてある
  • ログ・フィードの取得時に実行
  • XML-RPC API で拡張された mt.runPeriodicTasks の利用
の2通りの方法が用意されています。
どちらの方法もサーバーの設定を必要とせず外部からMTのスケジュールタスクを実行させることが可能なのですが、その設定方法については具体的に解説されていません。

このサイトでは以前Rubyスクリプトを用いた方法を紹介しましたが、今回は、Windowsに限定した、WSH(VBScript)を使った方法を紹介したいと思います。
この方法は、IEがインストールされているWindows XP/Windpows Server 2003以上の環境であれば、追加のソフトを必要としないことが特徴です。

MTで指定日投稿やその他のスケジュールタスクを実行するには、cronなどで定期的にrun-periodic-taskを実行する方法が良く知られています。
この他にも、ログ・フィードを取得するタイミングでスケジュールタスクを実行することもできます。
しかし、前者はcrontabに登録しなくてはいけませんし、後者はフィードを定期的に取得する必要があります。フィードリーダーなどに登録して自動的に取得する方法もありますが、ログの情報を外部に預けることに抵抗がある人もいるのではないかと思います。

そこで、第三の方法です。
XML-RPCを使う方法があります。

XML-RPC - Wikipedia

XML-RPCを使うと、外部のアプリケーションからMTに用意されたAPIを実行することができます。
XML-RPC APIを用いたブログエディタもたくさん開発されています。
今回は、XML-RPC APIの「runPeriodicTasks」メソッドを呼ぶことで、スケジュールタスクを実行します。
試しに、Rubyでさくさくとスクリプトを書いてみました。

require 'xmlrpc/client'

uri = "http://localhost/cgi-bin/mt/mt-xmlrpc.cgi"
username = "username"
password = "password"

client = XMLRPC::Client.new2( uri )
mt = client.proxy("mt")

begin
  result = mt.runPeriodicTasks(username, password)
rescue XMLRPC::FaultException => e
  puts "fault #{e.faultCode}: #{e.faultString}"
end

このスクリプトをテキストエディタなどに貼り付けて、scheduke_task.rbのようなファイル名で保存します。
uriにMTのmt-xmlrpc.cgiのURLを、usernameにはAPIを実行するユーザ名を、passwordにそのユーザの Webサービスパスワードを入力してください。
このスクリプトをWindowsのタスクスケジューラなどで定期的に実行すれば、MTのスケジュールタスクを実行することができます。設定が面倒なら、手動で実行しても良いでしょう(笑)
これなら、手元の普段使っているPCからでも操作ができます。