これまで、cronがなかったり、指定できるcronの数が制限されているWebサーバーがあると、一体全体どうしようかな、と頭を悩ませていましたが、GAS(Google Apps Script)を使えば解決できるます。
cronで実行したい処理を、外部からアクセスしないような複雑なURLの場所に配置しておきます。そして、GASで以下のようなコードを書きます。
function getURL() { var apiURL = "http://example.com/hidden/url/hogehogehoge/api.php"; var r = UrlFetchApp.fetch(apiURL); if (r.getResponseCode() == 200) { var body = r.getContentText(); Logger.log(body); } }
その後、GASのエディタ上部のメニューから「リソース > 現在のプロジェクトのトリガー」をクリック。そして、実行したい日や間隔を指定します。
これだけです。APIの実行結果を知る必要がある場合には、実行結果をメールするようにすれば良いでしょう。
メール送信処理を足してものが、以下のプログラムです。
function getURL() { var apiURL = "http://oto.chu.jp"; var body = "(empty)"; // URLにアクセス var r = UrlFetchApp.fetch(apiURL); var code = r.getResponseCode(); if (code == 200) { body = r.getContentText(); } // 自身のメルアドを取得 var email = Session.getActiveUser().getEmail(); body = "ResponseCode:" + code + "\n" + body; // 結果をメールする MailApp.sendEmail(email, email, "API Result", body); }
いやはや、簡単で、びっくりです。