今回のゴール
毎月1日、AM8:00に自動で、以下の処理が行われる
※このため、今回はJob Runnerの「定期実行タスク」でカスタマイズを作成します。請求書発行日が処理開始月以降のレコードをもとに、請求先・請求年月単位で集約し、請求書アプリにレコードを作成する(※1日以外の日に、「直ちに実行」ボタンより手動実行をすることを考慮し、請求書発行日が処理開始月以降のレコードを対象としています)
※なお、同様の内容をkintoneアプリのカスタマイズで実現する方法はこちら
合計請求書(合算請求書)を作成する:kintoneアプリのカスタマイズ編
各アプリの概要
各アプリのフィールド名とフィールドコードはすべて同一です。
注文管理アプリ
同一請求先-請求発行日でも、商品が異なれば複数レコードで登録する運用とします。
請求書発行日(納品日の次月1日)は自動入力
請求先ID(請求先マスタから)と商品ID(商品マスタから)をルックアップ
「納品日」は必須入力とし「レコード登録時の日付を初期値にする」設定あり、「請求書発行日」は日付フィールド、「請求書発行日_文字列」は文字列(1行)フィールド、「請求先ID_請求書発行日」は文字列(1行)フィールドで自動計算あり、計算式は「請求先ID & "_" & 請求書発行日_文字列」としています。
請求書アプリ
同一請求先-請求書発行日で1レコードとなるように作り、注文情報はテーブルに登録
(参考)商品マスタアプリ、請求先マスタアプリ
商品ID、請求先IDはそれぞれ重複禁止設定済
なお、ここまでの各アプリの概要は、合計請求書(合算請求書)を作成する:kintoneアプリのカスタマイズ編 と同様となります。
続いて、各アプリにて以下の権限で API トークンを作成しておきます。
また、Job Runner を初めてお使いになる際にはJob Runnerを利用するとき、初めにすることを参照の上、アプリスロットの割り当てを行ってください。
では、カスタマイズ作成に入ります。
Job Runnerの設定
この請求書作成処理には大きく2つのポイントがあります。それは
請求書を作る単位になるフィールドを準備する
そのフィールドの単位でレコードを集めて処理をする
です。
それぞれのポイントごとにカスタマイズを確認していきましょう。
請求書を作る単位になるフィールドを準備する
今回のカスタマイズでは、請求書を作る単位になるフィールドの準備は、ここまでの記載の通りにアプリを作っていればほぼ終わっています。
※「請求先ID_請求書発行日」フィールドが請求書を作る単位のフィールドになります
そのフィールドの単位でレコードを集めて処理をする
今回のカスタマイズを作成する時には、「定期実行タスク」を新たに作成してください。
関連するアプリの接続設定
Job Runnerではまず最初に接続設定を行う必要があります。これは関連する全てのアプリ(データを読んだり書いたりする全て)に対し、接続設定が必要です。
今回は
注文管理アプリ
商品マスタ
請求先マスタ
商品マスタ
の4つのアプリに対し、接続設定を行う必要があります。
この時、やること「kintone 接続設定を行う」、条件「実行予定時刻になった時」ないし、「他のアクションの実行が完了した時」を使います。
※最初のアクションについては「実行予定時刻になった時」を、それ以降は「他のアクションの実行が完了した時」を使います。
処理を開始した日の月初を計算する
ここでは、処理を開始した日の、月初の日付を計算して取得します。
やること「日付を計算する」と、条件「他のアクションの実行が完了した時」を使います。
「日付を計算する」は、基準日にtoday 関数を用い、右辺値を「0」、計算内容を「〇ヵ月後の月初」とすることで、例えば、12月23日に処理を実行した時は12月1日が取得できます。
処理月の月初より後の日付に請求書発行日が設定されたレコードを取得する
ここでは、対象のレコードを取得します。
やること「条件を組み立ててレコードを取得する」を使います。
「条件を組み立ててレコードを取得する」の検索条件には請求書発行日に対し、アクション番号8の結果を選択します。また、並び順も設定します。これは請求書アプリのテーブル情報を、納品日(請求書発行日)順とするためです。請求先IDや納品日は、どの順で並んでほしいかを元に決めています。
請求先ID、請求書発行日をキーに重複を除去する
請求先ID、請求書発行日の単位で処理をするため、重複を除去したレコードを準備します。
ここでは、やること「レコードから重複を除去する」を使います。
「レコードから重複を除去する」のイメージについては、キーとなるフィールド以外のフィールドに関する考え方はやること「レコードから重複を除去する」の「キーとなるフィールド」節をご覧ください。
請求書ID・請求書発行日ごとの処理を始め、請求書を発行する単位でレコードを絞り込む
請求先ID(同一請求先)・請求書発行日単位での処理を行うため、対象となるレコードを絞り込みます。
ここでは、やること「取得したレコードを絞り込む」、条件「レコード1行が準備できた時」を使います。
※ここで請求書発行単位での絞り込みに使うために、1つ前のアクションで重複を除去しています。
なお、「取得したレコードを絞り込む」の処理のイメージは次のようになります。
請求書アプリにレコードを更新または追加する
ここからは、請求書アプリにレコードを保存(更新または追加)していきます。
今回はテーブルへの保存を行うため、2段構えの構成でレコードを保存(レコードを保存→テーブルを保存)していくのですが、まずレコードを保存する処理がこのアクションになります。
やること「キーの値をもとにレコードを更新または追加する」を使って、レコードへの更新または追加を行い、「請求書ID」・「請求書発行日」単位でのレコードを確実に存在する状態にします。
なお『$アクション番号[0]』のゼロは、1行目のレコードを示します。
1つ前のアクションで追加したレコードを取得する
テーブルにも情報を反映させるため、先ほど更新または追加したレコードを取得します。
やること「条件を組み立ててレコードを取得する」を用います。
請求書アプリのレコードのテーブルに注文情報をセットする
続いて、テーブルへの書き出しを行います。
やること「レコードをテーブルに書き出す」を用います。
これで、定期実行タスクのアクションの設定は終了となります。
設定したカスタマイズをすぐ動かして動きを確認しておく
設定した内容を直ちに実行して、動きを確認しておきましょう。動きの確認には『ジョブ生成・設定』ボタンをクリックしたあと出てくるダイアログで、『直ちに実行』をクリックします。
すると、次のような結果となるはずです。
どうでしたか?
望む動きが実現できたら、最後にスケジュールを設定しましょう!
定期実行タスクのスケジュールを設定する
動きが確認できたら、最後に定期実行タスクのスケジュールを設定します。
画面上部の『ジョブ生成・設定』ボタンから動かしたいスケジュールを設定してください。
おわりに
今回は請求書データを作成するカスタマイズを実現してみました。
複雑な処理やデータ量が多い処理については、Job Runnerを使って頂くのがおすすめです。
ただ、画面のカスタマイズでも結構色んなデータ処理が実現できます。
※同様の処理を画面のカスタマイズで実現した記事が次のものです。
合計請求書(合算請求書)を作成する:kintoneアプリのカスタマイズ編
うまく使い分けて、データを望む形にうまく処理してみて下さい。
ご不明点等ございましたら、チャットにてご質問ください。
Customineドキュメントやサポートページもぜひご活用ください。