Job Runnerを使うと、レコードを取り扱うのと同じ要領で、テーブル行を取り扱う事ができます。


この記事では具体的な例として、「日報」アプリのテーブルに記録された対応履歴を、「顧客別対応履歴」アプリのレコードと同期するカスタマイズについてお伝えします。



今回のカスタマイズで用いるアプリ

注:この記事で用いるアプリは、カスタマインの歩き方 カスタマイズお試し用ファイルダウンロード の Job Runner 編にアプリテンプレート、サンプルデータがありますので、そちらをご利用頂く事もできます。


はじめから自分でアプリを作成したい場合は、次のようにアプリを作成してください。

※本カスタマイズに影響のあるフィールドのみ記載しています


日報アプリ

※フィールド名とフィールドコードは同じものを指定します

フィールド名

フィールドタイプ

備考

報告日

日付


明細

テーブル

次の「明細番号」~「顧客名」はテーブル内のフィールドとして設定してください。

明細番号

文字列(1行)


対応日付

計算

計算式:報告日
日付(例:2012-08-06)を選択

顧客コード

ルックアップ

顧客マスタアプリを関連付ける(コピー元のフィールドは「顧客コード」)
ほかのフィールドのコピーに「顧客名」を選択

顧客名

文字列(1行)



アプリのデータ例は次のようなものです。


顧客別対応履歴アプリ

※フィールド名とフィールドコードは同じものを指定します

フィールド名

フィールドタイプ

備考

日報明細番号

文字列(1行)


対応日付

日付


顧客コード

ルックアップ

顧客マスタアプリを関連付ける(コピー元のフィールドは「顧客コード」)
ほかのフィールドのコピーに「顧客名」を選択

顧客名

文字列(1行)



アプリの初期データは不要です(このアプリに追記・更新する処理のため)。


顧客マスタアプリ

※フィールド名とフィールドコードは同じものを指定します

フィールド名

フィールドタイプ

備考

顧客コード

文字列(1行)

値の重複を禁止する

顧客名

文字列(1行)



アプリのデータ例は次のようなものです。


アプリのAPIトークン設定

今回のカスタマイズを実行するためには、kintoneアプリにAPIトークンを作成し、アクセス権を設定する必要があります。


日報アプリ

※「レコード閲覧」権限を設定


顧客別対応履歴アプリ

※「レコード閲覧」、「レコード追加」、「レコード編集」権限を設定


顧客マスタアプリ

※「レコード閲覧」、「レコード編集」権限を設定


カスタマイズの全体像

カスタマイズの全体像は次のようになります。



また、今回のカスタマイズの要件は次のようになります。

  • 『日報』アプリのテーブルに記録された顧客ごとの対応履歴を、『顧客別対応履歴』アプリにレコードとして登録し、同期する

  • 『日報』アプリのテーブルには、顧客別の対応履歴以外の明細も存在するが、『顧客別対応履歴』アプリと同期するのは『顧客コード』フィールドに値が入っている行のみ

  • 『顧客別対応履歴』アプリの『顧客コード』フィールドは、ルックアップフィールドを使用している


『日報』アプリのテーブルに『明細番号』フィールドを作成し、報告日と報告者のログイン名と連番を結合した「20220927customine01」のような値を設定しています。この値は、『日報』アプリ内で一意になるように設定しており、『顧客別対応履歴』のレコードと同期をとる際のキー(お互いを結び付け、識別するための値)として使用します。


『顧客別対応履歴』は下記のような結果となります。『日報』アプリの明細番号が「20220927customine01」の行は、顧客コードフィールドが空欄のため『顧客別対応履歴』アプリには同期されません。


それではカスタマイズを見ていきます。


接続設定を行う

まずは、やること「kintone 接続設定を行う」で『日報』『顧客別対応履歴』、そして『顧客マスタ』アプリに接続します。


ここでなぜ『顧客マスタ』アプリの接続が必要かについては、本記事の下部のコラム『ルックアップフィールドに値をセットするときは』をご確認ください。



また、やること「kintone 接続設定を行う」ではkintoneアプリのAPIトークンがそれぞれ必要となります。これは上の「アプリのAPIトークン設定」で記載したトークンをそれぞれ設定して下さい。


コピー元アプリの全レコードを取得する

次に、『日報』アプリから全レコードを取得します。


やること「全レコードを取得する」を用います。


日報アプリのレコードは下記のようになっていますので、アクション3ではレコード番号2、3の全レコードが取得されます。





レコード1行毎のテーブル行を取得する

次のアクションでは、やること「テーブル行をレコードとして取得する」を条件「レコード1行が準備できた時」で実行します。


パラメーター「レコード取得アクション」には「3」を指定し、アクション3で取得した『日報』アプリの全レコードから1レコードずつ取り出して処理を行う事ができます。


テーブル行1行毎に同期処理を行う

次に、レコードとして取得したテーブル行ごとの処理を行っていきます。

やること「レコードをもとに別のレコードを更新または追加する」を条件「レコード1行が準備できた時」で使用して、テーブル行を1行ずつ『顧客別対応履歴』アプリのレコードと同期をとります。


なお、やること「レコードをもとに別のレコードを更新または追加する」は、パラメーター「追加または更新先アプリ」に指定したアプリに、パラメーター「キーとなる更新先のフィールド」の値が一致するレコードがあればレコード更新、なければレコード追加を行う「やること」です。


今回は、『日報』アプリの『明細番号』フィールドと、『顧客別対応履歴』アプリの『日報明細番号』フィールドの値をキーに同期を行うよう設定しています。


アクション5の設定でポイントとなるのは、条件「フィールド値が空でないならば」です。アクション5では、条件「レコード1行が準備できた時」を指定しているため、アクション4で取得したテーブル行を1行ずつ扱う事ができます。そのため、アクション5の条件の意味は、アクション4で取得したテーブル行の『顧客コード』フィールドの値が空でない場合のみ、アクションを実行する、となります。



今回の例では、「20220927customine01」の上司面談の行は顧客コードが空ですので、この行についてはアクション5は実行されません。



全体の各アクションの流れと、アクションで扱うレコード(テーブル行)は下記の通りです。



以上が、テーブル行と別のアプリのレコードの情報を同期するカスタマイズです。今回は定期実行タスクのカスタマイズで作成したため、たとえば夜のうちに活動履歴を作成し、翌朝には最新化されている、といった運用が想定されます。


Job Runnerの処理では、テーブル行は基本的にやること「テーブル行をレコードとして取得する」でレコードとして取得し、続くアクションではレコードとほぼ同じように扱う事ができます。


また、Job Runnerではテーブルに関するやることがkintoneアプリの画面のカスタマイズと比較して少ないのですが、これはやること「テーブル行をレコードとして取得する」でレコードとして取得すれば、その後の処理はレコード用のやることで対応可能であるためです。



コラム:ルックアップフィールドに値をセットするときは

Job Runnerの処理でルックアップフィールドに対して値をセットする際は、ルックアップ

フィールドの「関連付けるアプリ」に指定したアプリについても、やること「kintone 接続設定を行う」で接続を行う必要があります。kintoneはルックアップフィールドに値がセットされると「関連付けるアプリ」に指定したアプリからフィールドの値の取得を行うため、その際に使用するための接続設定が必要となります。


カスタマイズでは下記のように指定します。


kintone 接続設定を行った上で、やること「レコードをもとに別のレコードを更新または追加する」などのレコードを追加・更新するやることのパラメーター「追加または更新先アプリのAPIトークン」に、レコードの更新・追加先アプリのkintone 接続設定に加え、ルックアップの「関連付けるアプリ」に対するkintone 接続設定も共に指定します。


下記のように、パラメーター「追加または更新先アプリの API トークン」の選択で複数のやること「kintone 接続設定を行う」のアクションを指定できます。


この点は、指定した日時にルックアップフィールドとテーブルを含むレコードを追加する にも詳しく書いてありますので、併せてご覧ください。


おわりに

この記事では、テーブル行と別のアプリのレコードの情報を同期するカスタマイズについてお伝えしました。

Job Runnerではテーブル行もレコードと同様の操作で操作していただける事を、ご確認いただけたかと思います。


レコードの更新は簡単にできる分、思いもよらない大量のレコードを、意図しない内容で更新したりすることもできてしまうものです。

実際にカスタマイズを作成される際には、Job Runnerテスト実行 を使ってテストするか、テストアプリとテストデータでよくテストを行った上で、実際のアプリ・運用に適用していくことをおすすめします。


ご不明な点がございましたら、チャットでお問い合わせください。

Customineドキュメントサポートページも、ぜひご活用ください。