rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その１３）誕生日から年齢計算してみる

[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その１２）Error saving draft](https://qiita.com/rex0220/items/4b61931f860b3785559d)の続きです。

誕生日から年齢計算する問合せで応答を確認します。

# 概要

いろいろ学習させてきたので、誕生日から年齢計算する問合せで応答を確認していきます。
最初の応答から、いくつか訂正を行っていくと、分かりやすい計算式になりました。
計算式の作り方を知っている人が、計算式を組み立てるのに利用するには便利だと思います。

# スペース項目に当日の年齢を表示するには？
まずは、ざっくりとした要望で応答を確認します。
ちゃんと作成した計算式の解説も入れてくれました。

![2023-11-20_09h09_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/ee90a3f0-e600-6a86-0633-10244f36b4ff.png)

# 年齢が 60才以上の場合、年齢を赤色で表示したい
少し条件によって書式を入れる要求をしました。

![2023-11-20_09h09_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/f5aa25dd-dec6-4683-29da-d3d1fb5d9e10.png)

# 年齢が 20才未満の場合、年齢を青色で表示したい
さらに別の条件によって書式を入れる要求ですが、前の６０才の条件処理が消えてしまいました。
要求の仕方にはコツが必要です。

![2023-11-20_09h10_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/30f1df36-4285-146d-cf4b-c3e156ff267f.png)

# 年齢が 60才以上の場合、年齢を赤色. 年齢が 20才未満の場合、年齢を青色で表示したい
条件を並べて要求したら、条件別の処理になりました。

![2023-11-20_09h11_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/c2e4e5c1-1c7f-5ea5-de3e-a88a9b4ea830.png)

# 年齢計算を LET 関数、年齢の判定を IFS を使ってください
計算式がわかりにくいので、LET 関数とIFS 関数を使うように要求。
だいぶわかりやすくなりました。

![2023-11-20_09h12_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/b7cee0a7-405d-380a-cf39-e18d2ec365ae.png)

# "年齢"　にラベル、"" に　ラベルの書式等のコメントをつけて
処理内容が分かるように、コメントを付けてもらいます。

すると、立派なコメントが追加されました。
自分で計算式を作るときには、これほど丁寧なコメントを付けたことがありません。

![2023-11-20_09h12_45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/e54cf001-68b7-f287-7c75-5557169d97ef.png)

# 計算式プラグインに計算式を設定（計算式にエラー）

プラグイン設定画面で、計算式を設定したところ、エラーになりました。
TRUE の式が未定義でした。

![2023-11-20_09h19_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/70358786-a9b0-d9ef-7f9d-173331f6ddc9.png)

![2023-11-20_09h20_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/4b0ecad7-1835-e85a-b523-09f3444bcdef.png)

# IFS で指定している TRUE がエラーになりました
エラーをそのまま報告すると、訂正版の計算式が応答されます。

![2023-11-20_09h24_51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/4e0074fd-898d-c312-958a-e0989b742c52.png)

# IFS のデフォルトは、条件が不要です。
訂正版の計算式も冗長なので、IFS に関して訂正するようにします。
いらない条件が削除されました。
この辺は、計算式に詳しくないと分かりにくいですね。

![2023-11-20_10h03_27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/3cc40d73-0c5c-08c5-e55a-a4e66538db16.png)

# 出来上がった計算式
年齢計算を行う計算式が出来上がりました。

```年齢計算.js
LET(
    年齢, IF(誕生日, DATE_DIFF(誕生日, "TODAY", "years"), ""),  // 年齢の計算
    ARRAY(
        "年齢",  // ラベル
        "",  // ラベルのスタイル（なし）
        IF(年齢, 年齢 & " 歳", ""),  // 値
        IFS(
            年齢 >= 60, "color:red;text-align:right;",  // 60歳以上の場合、赤色
            年齢 < 20, "color:blue;text-align:right;",  // 20歳未満の場合、青色
            "text-align:right;"  // 上記以外の場合、デフォルトスタイル（右揃え）
        )  // 値のスタイル
    )
)
```

# 画面表示
最終の計算式を設定して、kintone の画面で実行確認すると、要件通りの年齢計算が行われました。

![2023-11-20_09h28_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/50af1a6e-cae8-620c-3910-e40acb43e470.png)

画面設定
![2023-11-20_10h16_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/fa3af6d1-52f4-91ee-f72b-9c0e1ae3d36f.png)


# コメントを１０文字以内にして

プラグイン設定画面に設定すると、計算式が見えにくいので、コメントを短くしてもらった。
わがままな要望にも、文句を言わずに答えてくれます。

![2023-11-20_13h59_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/13d5f966-a2de-2b2d-5455-09e131c58f86.png)


```年齢計算.js
LET(
    年齢, IF(誕生日, DATE_DIFF(誕生日, "TODAY", "years"), ""),  // 年齢計算
    ARRAY(
        "年齢",  // ラベル
        "",  // スタイルなし
        IF(年齢, 年齢 & " 歳", ""),  // 値
        IFS(
            年齢 >= 60, "color:red;text-align:right;",  // 60歳以上赤
            年齢 < 20, "color:blue;text-align:right;",  // 20歳未満青
            "text-align:right;"  // それ以外
        )  // 値スタイル
    )
)
```

- コメント変更前
![2023-11-20_13h50_41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/c8043573-1095-6fb6-54bd-9a3ac8955bbc.png)

- コメント変更後
![2023-11-20_13h52_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/f88d49e6-2acb-987b-7455-03d9b4f2deb0.png)

# まとめ

要件によっては、かなり使える計算式を応答するようになったと思います。
あとは、いろいろなケースに対応できるように、使用法を学習させたいと思います。