ページビューの合計

2024年12月11日水曜日

#DominoLeap ( #Leap ) 表の中のデータを活用したい

This will be another Domino Leap topic.

I want to use array data retrieved via the REST API for workflow emails, but I couldn't easily set it up.

Miyo Ambassador gave me a solution, which I will share with you here.


みなさま、こんにちは。
またまた今回もDomino Leapの話題です。

Domino Leapは簡単に外部のAPIに接続し、値が取れることはしばらく前に以下の記事でご紹介致しました。

#Domino #Volt ( #dominovolt )で 外部 #REST #API ( #restapi )を使う

単純にデータを取ってくるだけだと問題ないのですが、たとえば先日掲載しました郵便番号から住所を取得するAPIでは、戻ってくるJSONが配列になっており、Domino Leapのローコード画面で扱う場合は、表データになっています。

今回の例では、戻ってくるJSONは、以下のように[]で囲まれた配列になっています。


Domino Leapのサービスで呼び出すと、以下のように表として認識されることになります。


このデータをDomino Leapに取り込む場合、単にページに配置したフィールドで受けようとすると、以下のようなアラートが表示されます。


取得するデータと同じ数のリスト(または表)で受ける必要があるというものです。

そのため、値を受け取るにはページに表を配置し、その表に値を受け取るフィールドを作成する必要があります。
そうすることで、以下のように取り込むデータとDomino Leapの関連付けを行うことが可能となります。



ここまでは問題ないのですが、この表で受け取ったデータをさらに利用しようとした場合、普通にページに配置したフィールドと同じような取り扱いができないのです。

例えば、ワークフローでメールを送信する場合の本文・・・


このボタンを押すことで、ページ内のフィールドを本文に呼び出すことができるのですが、表内のデータはこちらにリストされていません。


これではせっかく簡単に取得してきたデータを有効活用することができません。
どうにかして表内のデータをページ上に配置したフィールドにもっていく必要がありそうです。

表内のフィールドのonItemChangeイベントや、追加で配置したデータを受け取るためのフィールドのonItemFocusイベントなどで試したのですが、うまくいきません。

よくよく考えてみると、もともと表ですから、複数行のデータが存在することが可能ですよね。
ここがちゃんと指定できていないことが原因のようでした(汗


ということで、困った時の"神"頼み。
ではないのですが、Domino Leapといえば・・・の御代アンバサダーに相談させて頂きました。
問合せて5分。
以下回答を頂きました。


きっと御代アンバサダーも同じことを考えて、既に解決策をお持ちだったんでしょう。

ということで、こちらを利用させて頂きます。


ページに「都道府県」「市区町村」「町域」の3フィールドを用意して、表のonAddイベントに取得したそれぞれの値をセットするようにしてみます。

前半部分は御代アンバサダーから頂いたスクリプトをそのまま記述しています。
後半でそれぞれ表の列データをページのフィールドに割り当てています。

・都道府県(F_HPref)に表の1列目(colid.get(0))をセット
       BO.F_HPref.setValue(colid.get(0).getValue());

・市区町村(F_HCity)に表の2列目(colid.get(1))をセット
       BO.F_HCity.setValue(colid.get(1).getValue());

・町域(F_HTown)に表の3列目(colid.get(2))をセット
       BO.F_HTown.setValue(colid.get(2).getValue());

以上の設定で、「郵便番号」を入力することで、API経由で表に値が取得されます。
表に値が追加されたことで、ページの3フィールドに値がセットされるようになりました。

こうなれば、あとは普通のページ上のフィールドと同じ扱いができるようになります。
先のメール本文のリストにも表示されました。



あとは見た目です。
ページ内の表に「都道府県」「市区町村」「町域」があり、同じフィールドがそれぞれページ上にもあるのはよくないですよね。

ということで、以下のように表を非表示にすることでこの点は解決することができました。


これで今までずっと悩んでいたことが解決できました。

・・・もっと早く聞いてたらよかった・・・

いつもながら、御代アンバサダー、ありがとうございます!!


御代アンバサダーがいらっしゃる株式会社エフ様では、さまざまな情報提供が行われております。
今さら気付いのですが、もしかしたらサンプル配布されているアプリに本件実装されているかも・・・

弊社でも「Notes/Domino開発tipsサービス」は契約させて頂いており、毎週届く内容はナレッジとしてどんどん蓄積されておりますので、ぜひご検討ください。

年内の記事はこれで終わりかな?

みなさま、よいお年をお迎えください!!

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})$

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

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


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


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

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

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

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



2024年12月2日月曜日

#Domino #Leap 任意のステージで #データグリッド を表示する

In this article, I will describe some notes on DominoLeap's Datagrid, which uses Stage for filtering.

It is a very simple matter, but if you don't know it, you may have some trouble.

みなさま、こんにちは。

ついに2024年もあと1か月となってしまいました。
毎年ながら、12月は気付くと年末が来るというドタバタな1か月になるのですが、今年は輪をかけて業務が積みあがっており、さらにあっという間に過ぎてしまうのではとみております。

そんな中ではございますが、少し気になる事項がありましたので、取るに足らないことかとも思いましたが、備忘録として記事とさせて頂きます。

弊社のワークフローは現在すべてDomino Leapに移行していっております。
今回も新規のワークフローの依頼があり、その中で躓いたことになります。


さてその内容ですが、アプリケーションページとして一覧を表示させるデータグリッドをよく利用します。
データグリッドは構成画面でフィルターを設定することができるため、さまざまな条件の一覧を提供することが可能になっています。


今回の案件では、ユーザーが選択したステージのデータのみを表示させるような設定を行ってみました。
設定そのものは難しくないのですが、1点注意点がありましたので、そちらをご紹介致します。


前準備として、ステージを選択するドロップダウンとデータグリッドを配置したページを準備します。
今回の例では、以下のようになります。


要はドロップダウンで選択したステージのデータだけをデータグリッドに表示させるというものです。

早速ですが、設定した内容です。


文字列が折り返されているのでわかりにくいですが、
「保存されたステージ」が「ステージ選択(ダイアログ)」と等しいデータを表示させる設定になります。



早速試してみますと・・・



データが表示されません。
今回は「否認」ステージを選択したので、一度外してみますと、


確かに「否認」ステージにデータはあります。
ダイアログに不必要なスペースが入っているのかなど、いろいろと調べて判明したのが、ステージは名称でなく、IDで指定する必要があったのです。

こちらが当初の設定でした。


ダイアログの「表示値」と「保存値」が同じ名称になっていたのです。
こちらの「保存値」をステージIDに変更します。


ちなみにステージIDは、ワークフロー画面でステージを選択すると表示されます。


結果、以下のように無事「否認」ステージのデータのみをフィルターして表示させることができました。


もちろん他のステージも同様です。

こうすることで、ステージごとにデータグリットを作成する必要なく、表示を切り替えることが可能になりました。



以上、ステージ以外の項目の場合、直接名称で設定が可能であったため、少し注意が必要である点のみご紹介させて頂き、今回は終了とさせて頂きます。

いつもお読みいただき、ありがとうございます。