はじめに
※こちらの記事は、指定した期間のレコードを月ごとに作成する方法の応用編となります。
指定した期間のレコードをまとめて作成したい場合、やること「日付の範囲からレコードを追加する」で1日につき1レコードを作成することができます。
ただ、1ヶ月につき1レコードを作成する「やること」はない(2024年7月3日現在)ため、カスタマイズで実現してみます。
本記事は、応用編として、期間を指定しているレコードが複数ある場合にも、期間内の月ごとの月末日レコードを”一括で”作成する方法をご紹介します。
アプリ構成
次のアプリを作成します。なおアプリには、次のフィールドを設定してください。
※フィールド名とフィールドコードは同じものを指定します
期間指定アプリ
作成結果アプリ
※備考フィールドは、ループ結果がわかりやすいように設けています。
実行結果イメージ
期間指定アプリ
作成結果アプリ
カスタマイズ例
Job Runner の定期実行タスクのカスタマイズを作成します。
kintone接続設定
期間指定アプリと、作成結果アプリのkintone接続設定を行います。
kintoneアプリのAPIトークンはそれぞれ以下のものが必要になります。
期間指定アプリ:レコード閲覧
作成結果アプリ:レコード閲覧、レコード追加
期間指定アプリからレコード取得
まずは期間指定アプリからレコードを取得します。ここでは「全レコードを取得する」を利用していますが、利用用途に合わせて適宜「条件を組み立ててレコードを取得する」などもご活用ください。
このカスタマイズは期間指定アプリのレコード1行に対して、その期間のレコードを作る処理となるため、「なにもしない」のアクションを作成します。これは、以降のループ処理をアクション3番の「レコード1行が準備できた時」のあとから始めたいためです。
このため、ここから先の処理はアクション3番で取得したレコード1件ずつの単位で処理されます。
作成結果アプリからレコード取得(作成レコードを検索)
このアクションが、今回の最大のポイントとなります。
「いずれかのアクションの実行が完了した時」で、アクション番号4、7、11を指定しています。
7番と11番は後続のアクションです。この後続のアクションが完了したとき、ふたたびこのアクションに戻る、という設定を行う事で、”条件が満たされる間処理を繰り返す”ことができます。
アクショングラフも併せて確認してみてください。
通常のJob Runnerではこのような作り方は行わないのですが、今回は指定された期間の間、繰り返しレコード作成を行いたいために設定しています。
なお、このような繰り返し処理は条件を誤ると処理が適切に終了せず、
Job Runnerの実行時間上限15分に到達するまで処理を繰り返す状態になってしまいます。APIリクエスト数の消費も大幅に増加しかねませんので、条件は慎重に設定ください。
また、氏名も条件に加えている点もご注意ください。
期間内のレコードが1件もなかったとき
期間指定アプリの開始日付〜終了日付の範囲のレコードが1件もなかったということは「レコード件数が0件ならば」で判断しています。
このときに、「基準日から特定の日付を取得する」で開始日付を基準とした当月月末日を取得します。たとえば、開始日付が「2024-03-01」であれば、「2024-03-31」を取得することになります。
月末日を取得したら、その日付を使って「レコードを追加する」でレコードを追加します。アクション5番で「氏名」も条件としていますので、ここでマッピングを忘れずに行います。
「備考」は1回目の追加だとわかりやすくするためにマッピングしています。
また、「即時反映するかどうか」パラメーターは必ず「即時反映する」に設定してください。この設定を行わなかった場合、アクション5番に戻った際にレコード追加ができていない状況となることがあり、無駄なループの原因となります。
ここまでで、1回目のレコード追加までのアクションが終わり、アクション5番に戻ります。
期間内のレコードが1件以上あったとき
期間指定アプリの開始日付〜終了日付の範囲の「レコード全行が準備できた時」に、レコード中の日付の最大値を求めます。たとえば、期間指定アプリの開始日付が「2024-03-01」だとすると、1回目のレコード追加で「2024-03-31」の日付のレコードができているはずなので、「2024-03-31」が日付の最大値となります。
アクション9番で、この日付に+1日した日付を計算します。月末日に+1日しているので、このアクションの結果は翌月月初日「2024-04-01」になります。
さらに、アクション10番で、月末日を取得します。すると「2024-04-30」が取得できます。
この日付を使って、アクション11番でレコード追加を行います。
ここでも、「即時反映するかどうか」パラメーターを「即時反映する」にすることを忘れないようにしてください。
ここまでで2回目以降のレコード追加までのアクションが終わり、アクション5番に戻る流れとなります。
アクション11番の追加条件「アクションの結果が特定の値ならば」で、アクション10番で取得した月末日と、期間指定アプリの終了日付を比較しています。
取得した月末日が、終了日付以前だった場合にレコード追加をします。取得した月末日が、終了日より後だった場合は、レコード追加は行われず、アクション5番にも戻らない動きとなります。
アクショングラフと全体のカスタマイズ
Customineドキュメントやサポートページもぜひご活用ください。
また、ご不明点等ございましたら、チャットにてご質問ください!