ページビューの合計

2024年12月4日水曜日

#Domino #Leap フィールドに入力する文字を制御する

This will be another Domino Leap topic.

If you want to integrate with other systems, don't you want to control the format and number of digits of the data?

In this article, I will show you not only what you can set in the properties, but also how to set them using “regular expressions”.


みなさま、こんにちは。
今回もLeapネタになります。

というか、告知ネタがないのがさみしい・・・

気を取り直して本題。

異なるシステムへデータを送信する場合など、送信先のフィールドフォーマット(形式や文字数)に合わせたいことがあるかと思います。

ちなみに今回の弊社案件は、得意先マスタ申請ワークフローをNotesからLeapに移行した内容になります。
最終的には申請された値をIBMiへ連携することを想定して作成しております。

この中で発生した項目について、いくつかご紹介致します。


まずはコードです。
弊社では[得意先コード(数字4桁)]と[得意先支店コード(数字3桁)]という形式になっています。
こちらをLeapのフィールドに設定してみたいと思います。
配置したフィールドはこのような感じです。


まずはデフォルトのプロパティを見てみます。


文字数は[最大文字数(デフォルト:50)]を変更することで制御できそうです。
[形式]という項目があるので、こちらで形式を指定できそうです。
[形式]のインフォメーションを見てみると、


このような説明が表示されました。
ということで、今回は以下の設定を行ってみます。


得意先コードの例は以下になります。



それでは入力を確認してみます。
まずは適切に数字4桁-数字3桁で入力した結果です。

想定通り、入力することができました。
次に桁数を不一致させてみます。
以下の例では得意先コードを5桁(1桁多い)、得意先支店コードを2桁(1桁少ない)入力になります。


しっかりと制御してくれました。


ここでひとつ疑問。
最大文字数と形式が不一致していたらどうなるのでしょう?
以下は得意先コードの最大文字数を5に、得意先支店コードを2に変更した上で、正しく4桁-3桁で入力した結果になります。

得意先コードは最大文字数より少なく、形式に一致しているため問題なし。
得意先支店コードは最大文字数の制限にひっかかり、エラーとなりました。


それではそれぞれ最大文字数で入力したらどうなるのでしょう?


得意先コードは形式との不一致。得意先支店コードは最大文字数との不整合という結果になりました。

このことから、厳密な文字数管理が必要な場合、最大文字数と形式をしっかり合わせて登録することで不必要なエラーを回避したほうがよさそうです。


次に[得意先カナ名(16バイト)]に挑戦したいと思います。
弊社の設定では、あらゆる半角文字(英数カナ)が許可されているフィールドになります。(但し記号は不可)
先の形式のインフォメーションにはここは触れられていませんでした。

ということで[正規表現]にチャレンジしてみたいと思います。
※正規表現についてはここで細かくは触れませんので、お手数ですが各自ググってください。

それでは設定内容です。


形式に記述している文字列は、

^[a-zA-Z0-9ヲ-ン]+$

になります。
早速ですが、いくつかテストした結果は以下の通りです。


結構いい感じですよね。
もし記号が必要なのであれば、正規表現に追記することで解決は可能です。


続いて郵便番号です。
プロパティは以下を設定しました。


いくつかパターンを試しましたので、動画をご覧ください。


適切な処理が行えていることがご理解頂けるかと思います。
特にハイフンなしで7桁数字を入力した場合、ハイフンを追加した###-####形式に変換されている点にご注目ください。


さてせっかく郵便番号が取得できましたので、公開APIを利用して住所を呼び出してみましょう。
今回はzipcloudから提供されている無料サービスを利用します。

まず郵便番号フィールドのonItemChangeイベントをクリックします。


[サービスの呼び出し]にチェックして、[サービス構成の追加/編集]をクリックします。


[URLを入力]を選択して、URLにサービスから提供されている値を入力します。
今回は先のサービスで提供されているURL

https://zipcloud.ibsnet.co.jp/api/search?zipcode=7830060

と入力して、横の歯車マークをクリックします。

すると以下のような[サービスの詳細]画面が表示されます。
左側にパラメーター名・・・ここでは[zipcode]に郵便番号がセットされています。
右側には本URLで指定した「7830060」の結果が取得されていることがわかります。


[OK]⇒[次へ]で進めると、[入力割り当ての作成]画面が表示されますので、

①ソースとして[郵便番号]
②ターゲットとして[zipcode]を選択して、
③のボタンをクリックすると、
④の行が追加され、設定が完了します。


[次へ]をクリックすると、[出力割り当ての作成]画面が表示されます。
先と同じように関連付けを行うのですが、[address1]と[都道府県]を選択した時点で、以下エラーが表示されてしまいました。


API接続を進めていくとよくぶつかるエラーになります。
戻ってきたJSONデータの階層と受けるLeapの階層が同じ必要があるようです。
・・・ここはなんとか回避できるとウレシイのですが・・・
ということで、今回取得する[都道府県][市区町村][町域]の3フィールドをひとつの表の中に入れてみます。

すると、何事もなかったかのように関連付けを行うことができました。


[次へ]をクリックして、必要があれば[タイトル]や[ID]を書き換えて[OK]で完了です。
もう一度[OK]を押して、サービスの設定画面を閉じます。

ということで、テストです。
今回の動画でご確認ください。


いい感じですね。
こんなに簡単にAPI連携ができるなんて、ほんと助かります。



最後は電話番号やFAX番号です。
携帯電話も可としたいため、どうしようかと考えていたのですが、こんな時こそChat-GPT
ということで帰ってきた正規表現の値は

^(0[1-9]{1}[0-9]{0,4}-[0-9]{1,4}-[0-9]{4}|0[789]0-[0-9]{4}-[0-9]{4})$

でした。
数字とカッコばかりで、素人で読み取るには・・・(汗

ということでそのままセットして試してみます。


おおー、さすがにハイフンなしからの変換はできませんでしたが、いい感じに制御してくれています。


このほかに、名称などの全半角なんでもありのフィールドで最大バイト数の制限の設定された項目があるのですが、こちらは現時点で解決できておりません。

どなたか知見ございましたら、ぜひ教えてください!!

今回は思わぬ大作になってしまいました(汗

引き続き、弊社案件で気になる点がありましたら順次報告させて頂きますので、よろしくお願い致します!!



0 件のコメント:

コメントを投稿