Job Runnerでは、レコードが取得できたとき、取得できなかったときの条件で処理を分岐させる事もできます。
この記事では具体的な例として、レコードを取得できた時は値をセット、レコードを取得できなかった時は値をクリアするカスタマイズについてお伝えします。
●テーブルに行がある時には最終活動日に値が入る
●テーブルに行がなかった時には最終活動日は空欄となる
これまでJob Runnerのアクションの作り方としては、やること「全レコードを取得する」などのレコードを取得するアクションの結果を使用するアクションの条件には条件「レコード1行が準備できた時」か条件「レコード全行が準備できた時」を使用する必要がある事をご紹介してきました。
ですが例外として、レコードを取得するアクションを実行した結果、1件もレコードを取得できなかったときに実行したいアクションに限り、条件「他のアクションの実行が完了した時」、「レコード件数が0件ならば」を使用する必要があります。
この理由は、「レコード1行が準備できた時」や「レコード全行が準備できた時」を指定したアクションは、レコードが取得されたときにしか動かないためです。
カスタマイズ例は、『案件管理』アプリの『活動履歴』テーブルの『活動日』フィールドの値が最大の日付を、テーブル外の『最終活動日』フィールドにセットする処理です。
また、『活動履歴』テーブルに空行しかなければ、最終活動日の値をクリアする処理にて、レコードが取得されなかった場合のカスタマイズを行っています。
カスタマイズで用いるアプリ
例として使用するアプリは、kintone アプリストアの『案件管理』アプリを使用します。
また、処理対象となる『案件管理』アプリを次のように修正します。
活動履歴テーブルの「活動日」フィールドの中でもっとも最終の日付を保存するための「最終活動日」フィールド(フィールドタイプ:日付) を追加します。
アプリのAPIトークン設定
今回のカスタマイズを実行するためには、kintoneアプリにAPIトークンを作成し、アクセス権を設定する必要があります。
※「レコード閲覧」「レコード編集」権限を設定
カスタマイズ
まずkintone接続設定を行います。
やること「kintone 接続設定を行う」、条件「実行予定時刻になった時」を使います。
続いて『案件管理』アプリから全レコードを取得します。
やること「全レコードを取得する」を使います。
1レコードごとに、そのレコード内のテーブル行をレコードとして取得します。
やること「テーブル行をレコードとして取得する」、条件「レコード1行が準備できた時」を使います。
これにより、アクション2で取得したレコードを1レコードずつ取り出して動かし、更にそのレコード内のテーブル行を取り出しています。
アクション4、アクション5は、アクション3で取得したレコードのテーブルに空ではないテーブル行が存在し、レコードとして取得できた場合の処理です。
まず、テーブル行の中で活動日(日付)の最大値を計算します。
やること「レコード中のフィールド最大値を計算する」、条件「レコード全行が準備できた時」を使います。
最大値が計算できたので、フィールドに値をセットします。
やること「フィールドに値をセットする」を使います。
アクション6は、アクション3で空でないテーブル行が存在せず、レコードとして取得できなかった場合の処理です。
やること「フィールド値をクリアする」、条件「他のアクションの実行が完了した時」、「レコード件数が0件ならば」を使います。
なお条件「他のアクションの実行が完了した時」は、レコードが取得される・されないに関わらず、パラメーター「アクション」に指定したアクションの実行が完了すれば動きます。
ですので、条件「他のアクションの実行が完了した時」、「レコード件数が0件ならば」を組み合わせることで、”レコードを取得した結果、レコードが1件も取得されなかったとき”の条件とする事ができます。
おわりに
Job Runnerでの具体的なカスタマイズ例として、レコードが取得できたとき、取得できなかったときの条件での処理の分岐についてご確認いただけたかと思います。
レコードの更新は簡単にできる分、思いもよらない大量のレコードを、意図しない内容で更新することができてしまいます。
実際にカスタマイズを作成される際には、Job Runnerテスト実行 を使ってテストするか、テストアプリとテストデータでよくテストを行った上で、実際のアプリ・運用に適用していくことをおすすめします。
ご不明な点がございましたら、チャットでお問い合わせください。
Customineドキュメントやサポートページも、ぜひご活用ください。