スクリプトを使ってみる (3) 生年月日から年齢を求める

最終更新日: 2022年11月25日

生年月日から年齢を算出する

ここでは顧客モデルに「顧客の生年月日から年齢を算出する」スクリプトを導入する例を説明します。

サンプルの顧客モデル

スクリプトの設定

  1. モデル名の下部に用意された「スクリプト」タブを開きます。
    スクリプトタブを開く
  2. スクリプトタブは、ブロックを並べるための画面が提供されます。開発者が並べたブロックは、最終的にスクリプトに変換され、アプリケーションに取り込まれます。
    ブロックを並べる画面
  3. はじめに、式を記述する項目を指定します。
    スクリプトで求めたいのは年齢ですので、「年齢」項目を指定します。
    年齢項目の式の記述を開始する
  4. 項目を選択すると、ブロックが配置できるようになります。
    ブロックの配置ができるようになった

ブロックを組み立てる

それでは、実際に生年月日から年齢を求める式をブロックを配置して実現してみましょう。
最初に配置するブロックは「文」です。

  1. 「文」タブをクリックすると、...に...をセットというブロックが見つかります。
    「文」ブロック

    「文」ブロックには二つの穴が空いています。この穴に別のブロックを挿入することができます。
    左側には値がセットされる項目(今回は "年齢" 項目)を、右側にはセットしたい値(今回はスクリプトで求めた年齢)をそれぞれ別のブロックで表すようにします。

  2. 文ブロックをドラッグ&ドロップして、ワークスペースに配置します。
    場所はどこでもかまいません。(のちほど整列させます。)
    ブロックをワークスペースに配置する
  3. 続いて、文ブロックの左側の穴に挿入したい、モデル項目ブロックを用意します。
    「モデル」というブロック群の中に用意されている、モデル名が記載されたブロックを選択し、ワークスペースにドラッグ&ドロップします。
    モデル項目ブロックを配置する(1)
    モデル項目ブロックを配置する(2)
  4. モデル項目ブロックは、項目名を指定することができます。ここでは "年齢" 項目を選びます。
    項目を指定する(1)
    項目を指定する(2)
  5. 用意したモデル項目ブロックを文ブロックの左側の穴へドラッグ&ドロップします。
    それぞれの凸部分の位置を合わせるようにドロップすると、ブロックがはまります。
  6. 次に、文ブロックの右側に、実際の年齢に相当する値を設定します。
    これによって "年齢(の値)" を「年齢の項目」にセットします。
    年齢を算出するため、今回はWagby が提供する関数ブロック「DATEDIF」を利用します。

    関数ブロックについて

    Wagbyが提供するすべての関数ブロックには、次の記述ルールがあります。

    [戻り値の型] 関数ブロック([引数1] [引数2]...)

    • 関数ブロックとは、複数の入力値に対して何らかの処理を行い、1つの結果を返すブロックです。
      複数の結果を返すことはありません。
    • 関数ブロックが返す結果を「戻り値」と呼びます。
      戻り値には「型」があります。数値、文字列、日付といった型が使われます。
    • 関数ブロックに渡す入力値のことを「引数(ひきすう)」と呼びます。
      関数ブロックによって引数が不要なもの、複数の引数を必ず指定しないと動作しないもの等、それぞれ仕様が異なります。

    今回利用する DATEDIF 関数は、次のように使うことができます。

    DATEDIF(開始日, 終了日, 単位)

    開始日と終了日との日数差を調べて、指定した単位の数値を返します。
    単位は "Y" (年数), "M" (月数), "D" (日数), "YM" (年数表示での端数の月数), "YD" (年数表示での端数の日数), "MD" (月数表示での端数の日数) を指定することができます。
    戻り値の型は整数型です。

  7. それでは実際に使ってみましょう。Wagby関数の日付時刻から DATEDIF 関数を選びます。
    DATEDIF関数を選択する(1)

    関数のブロックにマウスオーバーすると、説明が表示されます。

    DATEDIF関数を選択する(2)
  8. 文の右側の空白に、DATEDIF 関数のブロックを挿入します。
    DATEDIF関数のブロックを挿入する
  9. DATEDIF 関数ブロックの左側の空白(開始日)に、顧客モデルの生年月日を設定します。モデルブロックを使います。
    開始日を設定する

    お試しください

    DATEDIF 関数の第一引数は日付型です。そのため、日付型でないブロックをセットすることはできません。例えば上図で「顧客.ID」ブロックはセットできないように制御されています。

  10. DATEDIF 関数ブロックのもう一つの空白(終了日)に、今日の日付を設定します。
    今日の日付は、Wagby関数の「TODAY」ブロックを使います。戻り値の型は日付型です。
    TODAY関数のブロックを挿入する(1)
    TODAY関数のブロックを挿入する(2)

    ワンポイント

    類似の関数に NOW() があります。NOW() は現在の日付に加えて、時刻を返します。(日付時刻型の値を返します。)
    TODAY() は時刻を含みません。

ブロックを整列する

ブロックを整列させるボタンをクリックしてみましょう。ワークスペースの中央にうまく配置されるように整列されます。

ブロックを整列する(1)
ブロックを整列する(2)

作成したブロックを保存する

「保存」ボタンをクリックします。これでスクリプトの設定が完了しました。

ブロックを保存する

重要

項目ごとの計算式は、スクリプトのタイプを「項目」とし、項目名の部分に計算式を指定する項目を選択します。このとき、「...に...をセット」ブロックで、対象項目(この例では年齢項目)に値をセットしてください。別の項目に値をセットすることはできません。

動作の確認

  1. 顧客の登録(または編集)画面を開きます。
    顧客登録画面
  2. 生年月日を入力してみます。入力するとリアルタイムに年齢の値が変更されます。
    生年月日から年齢を求める

    ワンポイント

    計算で求める項目は、読み込み専用となり編集はできません。