1. HOME
  2. ブログ
  3. 【構築日記】krewDataリアルタイム実行プランを使って疑似的なループ処理を行う

【構築日記】krewDataリアルタイム実行プランを使って疑似的なループ処理を行う

krewdataのループ処理を提案

こんにちは。伴走ナビでkintoneの構築・お客様の伴走支援しています!伴走ナビの鍋島です!
2023年春現在で200件以上のお客のkintoneの改修のお手伝いをしてきています。
最近はkrewDataの使い方を説明しつつ一緒に組み上げるお仕事を、よくやっています。

はじめに

今回は、krewDataを使って、ループ処理に似た動きを作る方法を考えたので、ご紹介します。
ループ処理とは何ぞ、という方向けに調べてみたところ、下記のような記載が見つかりました。

ループ[loop]とは指定条件が満たされるまで何度も繰り返し行われる処理のこと。なお、終了条件の指定や次の命令を実行させないと、繰り返しの実行が続き、次の動作に移れない状態を無限ループという。

ループとは:loop – IT用語辞典・Web制作用語集

ざっくり言えば、同じことを何度も繰り返す処理、のことです。今回の記事では指定した回数分のレコードを作成する、という処理を行っています。
組んでいる動きが厳密なループ処理とは違うので、ループ処理に似せた動き、ということでタイトルには「疑似的な」という表現を間に挟んでいます。

さて、プログラミングの感覚に近いとよく言われる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を用いた疑似的ループ処理を行うことができました。

応用発展例として、フォームブリッジ等と組み合わせて、貸会議室等の予約管理アプリを作ってみたりしても良いかもしれません。また、最終的な表示についてもカレンダー表示系のプラグインと合わせることで少し違った表示ができそうだな、なんて妄想していたりもします。

私はこんなアプリに使ってみたよ、という実例があれば、ぜひコメントにて教えてください。
私のモチベーションアップにつながります。

それでは、よきkintoneライフを。

鍋島 将栄
伴走ナビ 構築・サポート担当。 krewdata/カスタマイン/計算式プラグインが得意。 JS開発を行わずにプラグインと連携サービスのみで複雑な動きを実現しつつ、あまりトラブルが起きないkintoneを作ることを意識して活動しています。
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

       

関連記事

今すぐ伴走ナビ公式LINEに登録する 最新記事を通知 公式LINEはこちら 毎月5社限定 無料相談はこちら