【構築日記】kintoneでループ(繰り返し)処理を行うには?krewDataを活用した疑似的ループ処理を紹介
こんにちは。伴走ナビでkintoneの構築・お客様の伴走支援しています!伴走ナビの鍋島です!
この記事にたどり着いたみなさんの中には
「kintoneで売上管理をする際にループ処理は出来ないの?」
「ループ処理をするためにどのようにアプリをつくればいいか知りたい!」
という悩みを抱えている方が多いのではないでしょうか?
実際にkintoneではループ(繰り返し)処理がデフォルトではできません。しかしながらプラグインを活用したカスタマイズをおこなうことで、疑似的なループ処理が可能になります。
そこで本記事ではkrewDataを使った疑似的なループ処理をおこなう方法について紹介します。これまで200件以上のkintone改修に携わった知識を活かして分かりやすく解説するので、ぜひ最後まで読んでみてくださいね!
🔳この記事でわかること
・kintoneでループ(繰り返し)処理を行う方法
・ループ処理が有効活用できる場面について
・kintoneで疑似的なループ処理の実例と手順
🔳こんな人におすすめの記事です
・kintoneでループ(繰り返し)処理を行いたい方
・ループ(繰り返し)処理の活用例や実際の手順を知りたい方
・krewDataの活用例を知りたい方
目次
そもそもループ処理(繰り返し処理)とはなに?
まずはそもそも「ループ処理とは何ぞ?」という方向けに調べてみたところ、下記のような記載が見つかりました。
ループ[loop]とは指定条件が満たされるまで何度も繰り返し行われる処理のこと。なお、終了条件の指定や次の命令を実行させないと、繰り返しの実行が続き、次の動作に移れない状態を無限ループという。
ループとは:loop – IT用語辞典・Web制作用語集
ざっくり言えば、同じことを何度も繰り返す処理、のことです。今回の記事では指定した回数分のレコードを作成する、という処理を行っています。
ループ処理(繰り返し処理)の活用事例
ループ処理の意味は理解できたかと思いますが、実際にどんな場面に使えるの?という方のために活用事例を紹介します。
例えば、保険営業の売り上げ成績を管理する場合をイメージしてみましょう。
月額10,000円の自動車保険を年払いで契約いただいたとします。年払いなので一括で120,000円が入金されるのですが、月額10,000円の商品なので毎月10,000円×12ケ月という形で計上しなければならず、手入力で対応するというケースがあるかと思います。
このようなケースは手間や入力ミスに繋がるため、管理するシステムに「売上120,000円」「1年間」と入力したら自動で毎月10,000円が自動計上されるのが理想的なのです。
その他にも、サブスク契約のように「解約日の日付までは毎月○○円の売り上げが計上される」というような場合も同様に動いてほしいという要望が多々あるのです。
そこで自動的に繰り返し計上される設定を実現する方法を、この記事で解説していきます。
kintoneでループ処理を実現するには?
今回の記事ではkrewDataリアルタイム実行プランを活用して指定した回数分のレコードを作成する、という処理で要望を満たす動きを実現しています。
(組んでいる動きが厳密なループ処理とは違うので、ループ処理に似せた動き、ということでタイトルには「疑似的な」という表現を間に挟んでいます。)
さて、プログラミングの感覚に近いとよく言われるkrewDataですが、ループ処理(繰り返し処理)を組むことが出来ません。
しかしながら、実務的にループ処理が欲しい場面は多々ありますし、ループ処理が可能になればkintoneカスタマイズの幅が広がると思うので、何とかループ処理(の様な動き)を組んでみよう、と取り組んでみました。
ラジカルブリッジ様のkrewDataでkintoneに存在しないレコードを生成する方法を参考にさせていただいています。
タイムカードや売上管理のような、ある程度決まった数(1か月分の1日単位レコードの生成/1年分の1か月単位のレコードを生成)を作る方法についてはリンク先のラジカルブリッジ様の方法で処理可能ですので、私はレコード内の任意の数値フィールド(または計算フィールド)の値の回数だけ処理を行う、という形でのkrewDataフローの設定例をお見せします。
疑似的ループ処理の実例紹介|デモアプリの説明
今回は私がデモとして作成した、社内の大型備品の予約管理アプリを使って動きを説明していきます。
左の予約アプリのレンタル期間始をα、レンタル日数をnとして
krewDataにより、日付の値が「α,α+1,α+2,……,α+n-1」となるn個のレコードを右の予約一覧表アプリに作成するフローを作成します。
余談ですが、左の予約アプリに表示されている「予約する」ボタンは、ジョイゾー様のkrewData手動実行プラグインを使っています。このボタンを押すことでkrewDataが稼働します。オススメ。
なお、本筋に関係ない話ですが、右のアプリのレコードは、通常、krewSheetを用いて下記のような形で表示されるように設定してあります。
予約者によってセルの色が変わるようにすることもできます。
疑似的ループ処理の実例紹介|具体的な設定手順
制御アプリを作成する
ループ処理を制御するためのアプリとなります。ループの上限回数を決めるために使っています。必要な項目としては、重複禁止かつ必須にした数値フィールドだけで大丈夫です。
※サンプルでは日付フィールドも作っていますが、krewDataフロー簡略化のために作っているだけなので、制御的には不要なフィールドです。
制御アプリのレコードを作成する
制御アプリにレコードを作ります。1~任意のループ上限回数までの数値を入力したcsvを作成し、先ほどのアプリに取り込みましょう。
今回は最大で5年分まで予約できる想定で作っているので、365*5=1825レコードほど作成しています。
最大10回のループであれば1から10までの10レコードを作成する、という様に作成するレコード数は、利用シーンに合わせて調整してください。
krewDataを設定する
krewDataの全体図としては、このようになっています。各コマンドの内容は、この後で説明します。
入力アプリの設定
入力アプリの設定にはパラメータ設定を使用します。
パラメータを使用しているので、krewDataはリアルタイム実行プランが必要になります。
パラメータの使い方については、krewData パラメータをご確認お願いします。
まず、制御アプリからの入力は、このように設定してあります。
今回はこの設定により、1825レコード中の3レコードのみ取得しています。
次に、レンタル機器使用予約アプリ(krewData疑似ループ処理) 以下、予約アプリの入力については、このように設定してあります。パラメータを使うことで、krewData稼働のきっかけとなった1レコードのみを取得できます。
定数の追加コマンドの設定
定数の追加については上下2つのコマンドで全く同じ内容で組んであります。
次のアプリ結合コマンドでキーとなる項目が欲しいので、「結合キー」などのフィールド名で、保存する定数には全く同じ値を入力してください。
ここまでの設定でプレビューを確認すると、このようになっています。
今回のプレビューでは、n=レンタル日数=3ということで3レコード取得しています。
アプリ結合コマンドの設定
アプリ結合では、先ほど定数の追加コマンドで設定した結合キーを使って結合します。
これにより、プレビューの様に、予約アプリから入ってきた1レコードが3レコードに増えます。
データ編集コマンドの設定
ループ処理の肝、α,α+1,α+2,α+3,……,α+nという処理をここで行っています。
プレビューは見やすくなるよう、必要な項目だけをフィールド選択で取り出しています。
レンタル期間始に制御番号が加わった日付が生成されていることがわかります。
最後のコマンドでは、日付が本来必要な日付+1日されているので、-1日して調整しています。
今回のデータ編集コマンドは、日付編集を使って処理していますが、Excel等で馴れている方は数式を使って処理する方が簡単だと思います。1コマンドで完結しますし。
まとめ|krewDataを活用した疑似的ループ処理でアプリ作成の幅を広げよう!
本記事では、
- そもそもループ処理とはなにか
- ループ処理が有効活用できる場面について
- krewDataリアルタイム実行プランを活用した疑似的なループ処理の実例と手順
について解説してきました。今回紹介した方法を参考に、自社にとって負担になっている作業を軽減できれば嬉しいかぎりです。
また、アプリの応用発展例としてフォームブリッジ等と組み合わせて、貸会議室等の予約管理アプリを作ってみるのも良いかもしれません。また、最終的な表示についてもカレンダー表示系のプラグインと合わせることで少し違った表示ができそうだな、なんて妄想していたりもします。
私はこんなアプリに使ってみたよ!という実例があれば、ぜひコメントにて教えてください!
みなさんのコメントが今後の私のモチベーションアップにつながります。
それでは、よきkintoneライフを。
この記事へのコメントはありません。