0
1

rex0220 計算式プラグインの使い方をGPTsに学習させてみる(その14)要件を箇条書きで指定

Last updated at Posted at 2023-11-21

rex0220 計算式プラグインの使い方をGPTsに学習させてみる(その13)誕生日から年齢計算してみるの続きです。

要件を箇条書きで指定して、いろいろ試してみた。

概要

要件を箇条書きで指定して、計算式を作ります。
詳細を箇条書きにして、応答に問題がある場合は、箇条書きにを訂正や追加要件を加えて、再実行します。
よくありそうな下記の要件を試してみました。

  • テーブルの行番号を付与するには?
  • 日付項目の2か月前の10日を計算
  • 会社名の「株式会社」の表記を統一
  • 誕生日を和暦に変換
  • テーブルの旅費を区分毎に集計
  • ボタンをクリックして、日付に当日の翌月末をセット

テーブルの行番号を付与するには?

とりあえず、1行で済むテーブルの行番号

テーブルの行番号を付与するには?

テーブルの行番号.js
ROWNO(テーブル名) + 1

2023-11-20_22h56_05.png

日付項目の2か月前の10日を計算

「以前に学習させた内容が問題ないか」の確認です。問題無し。
rex0220 計算式プラグインの使い方をGPTsに学習させてみる(その7)誤った計算式の訂正学習

日付項目の2か月前の10日を計算

2か月前の10日.js
DATE_ADD(日付, -2, "month", "YYYY-MM-10")

2023-11-21_09h20_25.png

会社名の「株式会社」の表記を統一

最初は、REPLACE 関数を2回使った計算式だけだったので、正規表現で置換するように追加
計算式プラグインが正規表現に対応しているかどうか、あやふやな認識のようです。
もう少し正規表現の使用例を増やして学習させた方がいいかもしれません。

会社名の「株式会社」の表記を統一する計算式を作って
・正規表現で、㈱、(株)を「株式会社」に置換

株式会社の表記を統一.js
REPLACERE(会社名, "㈱|(株)", "株式会社")

2023-11-21_09h45_30.png

誕生日を和暦に変換

最初の応答では、変数名が分かりにくいので、変数名を日本語に指定してみました。

誕生日の日付項目を和暦(元号何年何月何日)の表記に変換したい
・LET の変数名は日本語で

誕生日を和暦に変換.js
LET(
  入力日付, DATE_FORMAT(誕生日), // 誕生日を文字列に変換
  元号, IFS(
    入力日付 >= "2019-05-01", "令和",
    入力日付 >= "1989-01-08", "平成",
    入力日付 >= "1926-12-25", "昭和",
    入力日付 >= "1912-07-30", "大正",
    入力日付 >= "1868-01-25", "明治"
  ),
  元号開始年, IFS(
    入力日付 >= "2019-05-01", "2019-01-01",
    入力日付 >= "1989-01-08", "1989-01-01",
    入力日付 >= "1926-12-25", "1926-01-01",
    入力日付 >= "1912-07-30", "1912-01-01",
    入力日付 >= "1868-01-25", "1868-01-01"
  ),
  和暦年, DATE_DIFF(元号開始年, 入力日付, "years") + 1,
  元号 & 和暦年 & "" & DATE_FORMAT(入力日付, "M月D日")
)

2023-11-21_09h33_48.png

テーブルの旅費を区分毎に集計

つぎに要件を箇条書きにして、計算式を作ってもらいます。
応答内容をみて、箇条書きの部分は、11 回書き直しています。
※項目の名前や区分の種類等を訂正

2023-11-21_08h38_10.png

下記の旅費について、区分別に合計を求める計算式を教えて
・テーブルに、当月の旅費を持つ
・テーブル項目として、日付、区分、金額、備考を持つ
・区分は、交通費・宿泊費・その他をドロップダウンで設定
・区分別に金額合計項目を持つ

旅費を区分毎に集計.js
// 交通費合計:
SUMIF(区分="交通費", 金額)

// 宿泊費合計: 
SUMIF(区分="宿泊費", 金額)

// その他合計: 
SUMIF(区分="その他", 金額)

2023-11-21_08h31_34.png

ボタンをクリックして、日付に当日の翌月末をセット

日付に当日の翌月末をセットとクリアするボタンを作ってみた

2023-11-21_10h10_55.png

ボタンをクリックして、日付に当日の翌月末をセットする計算式
・スペース項目にボタンを表示
・ボタン名は、翌月末セット
・ボタンクリックで、「日付に当日の翌月末をセット」
・ダイアログ表示はしない
・当日の翌月末の計算は LET 関数を使って

ボタンをクリックして、日付に当日の翌月末をセット.js
BUTTON(
    "翌月末セット",  // ボタン名
    LET(
        本日, TODAY(), // 本日の日付を取得
        翌月末, DATE_ENDOF(DATE_ADD(本日, 1, "month"), "month"), // 本日の翌月末の日付を計算
        FSET(日付, 翌月末) // 日付項目に翌月末の日付をセット
    )
)

ボタンをクリックして、日付クリアする計算式
・スペース項目にボタンを表示
・ボタン名は、クリア
・ボタンクリックで、日付をクリア
・ダイアログ表示はしない

ボタンをクリックして、日付をクリア.js
BUTTON(
    "クリア",   // ボタン名
    FSET(日付, "")  // 日付項目をクリア
)

2023-11-21_09h55_04.png

2023-11-21_10h04_42.png

まとめ

要件を箇条書きで指定すると、要件の変更・追加の経過はわからなくなりますが、応答の再現性は高くなると思います。
※ただし同じセッションで、要件を変更して要求した場合は、以前の要求が生きている
応答に対して、変更・追加を繰り返す場合は、ちょっとした言葉の違いから応答が大きく変わる場合があります。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1