gusuku Customine カスタマインの歩き方 Excel 関数とカスタマイン編
4. ミッションⅢ『 注文管理』アプリの集計結果を『取引先マスタ』アプリに反映せよ!

4-1. COUNTIFS関数のような集計をカスタマイズで実現するには

前の記事:3-2. 採番したコードを誤って修正してしまわないカスタマイズを実現するには

次の記事:なし(この記事が最終です)


はじめに

表計算ソフトのCOUNTIFS関数のような集計関数で、マスタのレコード毎の件数を把握する運用となるケースがあります。


この記事では、この要件をkintoneとカスタマインで満たせるようなカスタマイズの実現を目指したカスタマイズについて記載します。


元々運用されていた表計算ソフト

運用:「注文管理」の「返却遅延」の数を表計算ソフトのCOUNTIFS関数(以下、COUNTIFSと記載)で、取引先コードごとに集計し、表示している。


アプリの準備

まず、次の要領で2つのアプリを作成してください。

※この記事内で必要となるフィールドのみ記載しています

取引先マスタ

※フィールド名とフィールドコードは同じものを指定

フィールド名

フィールドタイプ

備考

返却遅延回数

数値



注文管理

※フィールド名とフィールドコードは同じものを指定

フィールド名

フィールドタイプ

備考

返却遅延

チェックボックス

項目は「返却遅延」のみ設定。


検討:関連レコードをカウントすることで、遅延返却回数を集計できないか?

※注:この検討はうまくいかないので、結論となるカスタマイズを知りたい方は次の「カスタマイズ」節からご覧ください。


作成している関連レコードのうち、返却遅延のレコードの行数をカウントすることで、遅延返却回数を集計できそうな気がします。

実際にこの考えのもと、カスタマイズを行ってみました。


「取引先マスタ」アプリ


試してみた

試してみたカスタマイズは次の通りです。


「取引先マスタ」

3つのアクションを設定します。


それぞれ、次の「やること」、「条件」を設定しています。

やること「関連レコード一覧の条件でレコードを取得する」、条件「詳細画面を表示した時

やること「取得したレコードを絞り込む」、条件「他のアクションの実行が完了した時

やること「レコード行数をカウントする」、条件「他のアクションの実行が完了した時


実行結果

「取引先マスタ」アプリ



狙い通り返却遅延回数がカウントされ、指定のフィールドにセットされました。これで事なきを得たように思われました。


ですが、すぐに問題点が見つかりました。

返却遅延回数のカウントは、「取引先マスタ」の詳細画面が開いたときに実行されるように設定しています。そのため、各取引先のレコードを開かないかぎり、返却遅延回数が更新されないままになってしまうのです。

これでは不便であるばかりか、「取引先マスタ」を開いていない状態で値を確認したケースでは、返却遅延回数を誤認させてしまうことになりかねません。


そこで、改めて別の方式を検討してみました。


カスタマイズ

今度は「取引先マスタ」アプリではなく、「注文管理」アプリの更新を受けて、返却遅延回数をカウントするようなカスタマイズを試してみましょう。


「注文管理」

3つのアクションを設定します。



それぞれ、次の「やること」、「条件」を設定しています。

やること「条件を組み立ててレコードを取得する」、条件「レコードを保存した直後(削除後は除く)

やること「レコード行数をカウントする」、条件「他のアクションの実行が完了した時

やること「レコードを更新する(キーの値を直接指定)」、条件「他のアクションの実行が完了した時


なお、やること「条件を組み立ててレコードを取得する」の条件ビルダーは次の様に設定してください。


実行結果

「取引先マスタ」


まとめ

「注文管理」アプリでレコードが保存されたら、やること「条件を組み立ててレコードを取得する」で、集計対象とするレコードを絞り込む条件範囲(=フィールド)と検索条件(=値)を指定し、条件に合致したレコードのみを取得します。


そして後続のやること「レコード行数をカウントする」でその取得したレコードの数をカウントし、その結果をやること「レコードを更新する(キーの値を直接指定)」で、各取引先のレコードの返却遅延回数フィールドにセットしています。


これで、「注文管理」アプリでのレコード更新時に、「取引先マスタ」アプリの返却遅延回数をタイムリーに更新することができ、「取引先マスタ」アプリの一覧画面上で、常に最新の情報を確認できます。(課題:各取引先のレコードを開かないかぎり、返却遅延回数が更新されない)


ちなみに、やること「条件を組み立ててレコードを取得する」で条件「レコードを保存した直後(削除後は除く)」を使用していますが、カスタマインには他にも条件「レコードを保存する直前(削除時は除く)」という条件があります。

ですが、条件「レコードを保存する直前(削除時は除く)」を用い、更にエラーチェックなどを行っているようなケースだと、今回のアプリ構成例で例えれば、「注文管理」アプリの保存はキャンセルされたにも関わらず、「取引先マスタ」アプリだけが更新されてしまう という動きが起こり得ます。

そういったトラブルを防ぐため、今回のカスタマイズでは条件「レコードを保存した直後(削除後は除く)」を使用しています。



おさらい:COUNTIFS関数

関数の構文

COUNTIFS (条件範囲 1, 検索条件 1, [条件範囲 2, 検索条件 2],…)


関数の説明 

複数の範囲のセルに条件を適用して、すべての条件が満たされた回数をカウントします。


引用 https://support.microsoft.com/ja-jp/office/countifs-%E9%96%A2%E6%95%B0-dda3dc6e-f74e-4aee-88bc-aa8c2a866842



コラム:試行錯誤の繰り返しでカスタマイズを育てよう

この記事では、最終的にこのカスタマイズに行きつくまでに、以下のようなカスタマイズを検討していました。


1.まずは、サポートサイトで見つけた「関連レコード一覧を集計する」を参考にカスタマイズを試してみました。ところがこのカスタマイズでは、詳細画面を開くまで返却遅延回数が最新にならず、要件にあわないと判断し、却下しました。(課題:各取引先のレコードを開かないかぎり、返却遅延回数が更新されない)


2.次に、実は「取引先マスタ」アプリの一覧画面を表示したときに、全レコードの返却遅延回数を計算しセットするカスタマイズを試していました。ところがこちらでは、一覧画面を開くたびにカスタマイズが動作するため、APIリクエスト数が増えてしまったり、全レコードに反映がされる前に画面遷移を行ってしまい処理が途中で終了してしまうなど様々な問題が発生し、こちらの案も却下しました。


同じような結果にたどり着くにも、何通りものカスタマイズ方法が考えられます。

色々なカスタマイズを試しながら、業務と要件に合うカスタマイズ方法を見つけていきましょう。



コラム:Excelなどの表計算ソフトで運用されている業務をアプリ化するにあたって

kintoneは表計算ソフトではないので、現在の業務や運用が表計算ソフトで行われているものをkintoneに置き換える場合は、まずkintoneの特性を理解し、それを活かすデータ構造や運用を検討することが大切です。


この検討には、kintoneの基本機能の特性や制限事項をよく理解することが重要です。


やみくもにカスタマイズを導入するのではなく、kintone基本機能で十分に要件を満たせるのであれば、まずは基本機能での実現を検討するのがおすすめです。


おわりに

この記事では表計算ソフトのCOUNTIFS関数のようなカスタマイズを行い、マスタのレコード毎の件数を把握する要件を満たせるようなカスタマイズを実現してみました。


どうでしたか? 集計が行いたくなった時は、この記事を参考にしてみてください!


ドキュメントサポートページもぜひご活用ください。

また、ご不明点等ございましたら、チャットにてご質問ください!


gusuku Customine カスタマインの歩き方 Excel 関数とカスタマイン編
4. ミッションⅢ『 注文管理』アプリの集計結果を『取引先マスタ』アプリに反映せよ!

4-1. COUNTIFS関数のような集計をカスタマイズで実現するには

前の記事:3-2. 採番したコードを誤って修正してしまわないカスタマイズを実現するには

次の記事:なし(この記事が最終です)