先の記事に書いたQ4)のスクリプトがどうにも上手く動かないので、要件を書き直した。
Q4)要件を書き直しました。次の3つのフィールドを設定します。
・tekiyou
・kensaku(グローバル)
・tikan(グローバル)
tekiyouの中にkensakuの文字列が含まれているものを選ぶ。
tekiyouに含まれているkensakuの文字列と同じものを、tikanの文字列に置換する。
全てのレコードについてこれを実行する。
日本語版のスクリプトで示してください。
以下は、指定された要件に基づくFileMakerスクリプトです。このスクリプトは、全てのレコードに対して「tekiyou」フィールド内の「kensaku」フィールドに指定された文字列を検索し、見つかった場合にそれを「tikan」フィールドの文字列に置換する処理を行います。
【スクリプトの手順】
1. 検索モードへ移行: 対象レコードを特定するために検索モードに移行します。2. 検索条件の設定: 「tekiyou」フィールドに「kensaku」グローバルフィールドの内容を含むレコードを検索します。
3. レコードの検索実行: 条件に合致するレコードを検索します。
置換とフィールドの更新: 検索にヒットした各レコードに対して、「tekiyou」フィールド内の「kensaku」文字列を「tikan」文字列に置換します。4. 全レコードへの処理の適用: ループを使用して全レコードに対して置換を実行します。
- # 検索モードへ移行
- 検索モードに切り替え [ 一時停止: オフ ]
- # 検索条件の設定
- フィールド設定 [ YourTable::tekiyou ; "*" & YourTable::kensaku & "*" ]
- # 検索実行
- 検索実行 [ ]
- # 置換処理のループ開始
- ループ
- # 置換実行
- フィールド設定 [ YourTable::tekiyou ; substitute ( YourTable::tekiyou ; YourTable::kensaku ; YourTable::tikan ) ]
- # 次のレコードへ
- レコード/リクエスト/ページへ移動 [ 次の ; 最後の後に終了: オン ]
- ループ終了
途中まではスクリプトとにらめっこしたり、ファイルメーカーのデバッグ機能を使って考えてみたりしていたが、どうにもスクリプトそのものがおかしいように思えたので、要件の文章を誤解されないような形に訂正したら、だいぶシンプルになったが、これで問題なく機能した。
なるほど、ChatGPTへの指示の仕方が重要なのだ、というのがよくわかった。