スクリプトを使ってみる (3) 生年月日から年齢を求める
最終更新日: 2022年11月25日
ここでは顧客モデルに「顧客の生年月日から年齢を算出する」スクリプトを導入する例を説明します。
それでは、実際に生年月日から年齢を求める式をブロックを配置して実現してみましょう。
「文」ブロックには二つの穴が空いています。この穴に別のブロックを挿入することができます。
Wagbyが提供するすべての関数ブロックには、次の記述ルールがあります。
生年月日から年齢を算出する
スクリプトの設定
スクリプトで求めたいのは年齢ですので、「年齢」項目を指定します。
ブロックを組み立てる
最初に配置するブロックは「文」です。
...に...をセット
というブロックが見つかります。
左側には値がセットされる項目(今回は "年齢" 項目)を、右側にはセットしたい値(今回はスクリプトで求めた年齢)をそれぞれ別のブロックで表すようにします。
場所はどこでもかまいません。(のちほど整列させます。)
「モデル」というブロック群の中に用意されている、モデル名が記載されたブロックを選択し、ワークスペースにドラッグ&ドロップします。
それぞれの凸部分の位置を合わせるようにドロップすると、ブロックがはまります。
これによって "年齢(の値)" を「年齢の項目」にセットします。
年齢を算出するため、今回はWagby が提供する関数ブロック「DATEDIF」を利用します。
関数ブロックについて
[戻り値の型] 関数ブロック([引数1] [引数2]...)
-
関数ブロックとは、複数の入力値に対して何らかの処理を行い、1つの結果を返すブロックです。
複数の結果を返すことはありません。
-
関数ブロックが返す結果を「戻り値」と呼びます。
戻り値には「型」があります。数値、文字列、日付といった型が使われます。 -
関数ブロックに渡す入力値のことを「引数(ひきすう)」と呼びます。
関数ブロックによって引数が不要なもの、複数の引数を必ず指定しないと動作しないもの等、それぞれ仕様が異なります。
今回利用する DATEDIF 関数は、次のように使うことができます。
DATEDIF(開始日, 終了日, 単位)
開始日と終了日との日数差を調べて、指定した単位の数値を返します。
単位は "Y" (年数), "M" (月数), "D" (日数), "YM" (年数表示での端数の月数), "YD" (年数表示での端数の日数), "MD" (月数表示での端数の日数) を指定することができます。
戻り値の型は整数型です。
関数のブロックにマウスオーバーすると、説明が表示されます。
お試しください
DATEDIF 関数の第一引数は日付型です。そのため、日付型でないブロックをセットすることはできません。例えば上図で「顧客.ID」ブロックはセットできないように制御されています。
今日の日付は、Wagby関数の「TODAY」ブロックを使います。戻り値の型は日付型です。
ワンポイント
類似の関数に NOW() があります。NOW() は現在の日付に加えて、時刻を返します。(日付時刻型の値を返します。)
TODAY() は時刻を含みません。
ブロックを整列する
ブロックを整列させるボタンをクリックしてみましょう。ワークスペースの中央にうまく配置されるように整列されます。
作成したブロックを保存する
「保存」ボタンをクリックします。これでスクリプトの設定が完了しました。
重要
項目ごとの計算式は、スクリプトのタイプを「項目」とし、項目名の部分に計算式を指定する項目を選択します。このとき、「...に...をセット」ブロックで、対象項目(この例では年齢項目)に値をセットしてください。別の項目に値をセットすることはできません。
動作の確認
- 顧客の登録(または編集)画面を開きます。
-
生年月日を入力してみます。入力するとリアルタイムに年齢の値が変更されます。
ワンポイント
計算で求める項目は、読み込み専用となり編集はできません。