Wix専門のWeb制作会社、合同会社アクトワンのVelo開発部です!
今回は、Wixの開発機能「Velo」に備わっているスケジュール・ジョブについて、分かりやすくご紹介します。
Wixエディタ・Wix Studio共通の内容になります。
スケジュール・ジョブって何?
スケジュール・ジョブとは、指定した時間に自動で特定の処理を実行する機能です。
例えば、以下のようなケースで活用できます。
毎晩、自動で注文データを整理
毎月1日に、売上データを集計
お客様の誕生日に、自動でお祝いメールを送信
手動でやると大変な作業も、スケジュール・ジョブを設定すれば、自動化できます。
どうやって設定するの?
スケジュール・ジョブを登録するためにはバックエンドの jobs.config というコンフィギュ・ファイルに関数、日時等を登録する必要があります。

バックエンドの追加(⊕)をクリックし「スケジュール済ジョブ」を選択します。
するとバックエンドに jobs.configファイルが自動的に追加されます。
ファイルを開くと以下の様な「記入例」が記載されていますので、この例に沿って登録を完成すればジョブは登録できます。

ここでは、2つの Job を登録した設定例が記載されています。要はキーが jobs、値が (jobの)配列となるオブジェクトを登録することです。
{ "jobs" : [ job_1, job_2, …, job_n ] }
そして各ジョブ(job_1, …)は以下の形式を持つオブジェクトです。
{
"functionLocation": "/someBackendFile.js",
"functionName": "someBackendFunction",
"description": "some job description",
"executionConfig": {some schedule}
}
上記2つの記入例の違いは some schedule の書き方の違いです。いずれにせよこの登録を行うことで、スケジューラーは、
some schedule に登録された時刻に
/someBackendFile.js に登録されたファイルの
someBackendFunction に登録された関数を
実行します。
cron形式とは?
スケジュール・ジョブの実行タイミングは、cron(クロン) という特殊な記述方法で設定します。
設定値 | 意味 |
* * * * * | 毎分 |
0 * * * * | 毎時0分 |
*/10 * * * * | 10分毎 |
0 0 * * * | 毎日0時0分 |
0 0 1 * * | 毎月1日0時0分 |
0 0 1 1 * | 毎年1月1日0時0分 |
0 0 * * 0 | 毎日曜日0時0分 |
注意!
Wixのスケジュール・ジョブは「UTC(協定世界時)」で設定されます。
日本時間(JST)は「UTC+9」なので、たとえば 0 0 * * *(深夜0時実行)は、日本時間の午前9時に実行されます。
コレクション
時刻をセーブするコレクション(jobCollection)を以下の様に用意しておきます。

日付フィールドの設定は「時間フィールドを含む」にチェックを入れておきます。
こうしておくと日付オブジェクトをそのままセーブすることが出来ます。
ただし、このチェックを入れない場合は、書式としての文字列 "yyyy-mm-dd" で日付をセーブすることが出来ます。
ここでは使いませんが時間フィールドでは、書式としての文字列 "hh:mm" で時間をセーブすることが出来ます。
これらはいずれも Dateオブジェクトに .toISOString( )メソッドを施して得られる文字列 "yyyy-mm-ddThh:mm:ss.xxxZ" を slice( )メソッドで加工すれば簡単に得られる文字列です。
関数の定義
バックエンドの追加(⊕)をクリックし「webモジュールを追加」をクリックしファイル名を saveTimeJob.web.js とします。
ファイル名の末尾は .web.js にするように推奨されています。

このファイルに以下の様に webモジュールの形式で関数 saveTime を作ります。
ジョブのパーミッションはアドミンのみですのでパーミッションはそのように設定しています。

9行目でコレクションのアイテム数を調べ、11行目で記録回数と時刻をコレクションにセーブしています。
設定は以上で終了です。驚くほど簡単です。
実行結果
下図の様にコレクションに時間がセーブされています。
微妙に秒がずれているのが面白いです。

まとめ
スケジュール・ジョブを使えば、手間のかかる作業を自動化でき、運営がぐっと楽になります。 「夜中にバックアップを取りたい」「定期的にレポートを更新したい」などのニーズがあれば、ぜひ活用してみてください!
Wix Tech Salon
アクトワンではWixクリエイターを中心としたオンラインサロンを運営しております!
Wixの知識のシェアや、ビジネスの課題解決、メンバー同士の交流を目的にしています。
ご興味がある方はぜひ覗いてみてください!
Comments