はじめに
レコードをコピーする「やること」はCustomineで色々と用意されているのですが、
・添付ファイルが含まれるテーブル
のレコードコピーは簡単に作成することは出来ません。
そこで、「kintoneアプリのWebhook」を使って作成してみます。
今回のカスタマイズで出来ること
添付ファイルのあるテーブルも一緒にレコードをコピー(追加、更新)することが出来ます。それぞれのアプリのレコードはキーの値で紐付きます。ですので、キーが一致していれば複数レコードにコピーが可能です。
アプリ構成
コピー元とコピー先の2つのアプリを作成します。今回は両方とも同じフィールド構成にしています。
両方のアプリには以下のフィールドを作成しました
Customineの設定
全体の設定はこのようになります。
設定が長いので、部分ごとに分けて説明します。
接続設定
「Webhook を開始した時」に「kintone 接続設定を行う」でコピー元とコピー先の接続設定をします。その次に「Webhook から渡されたレコードを取得する」で渡されたレコードを取得します。
レコード更新・追加
テーブルを処理する前にレコードを作成しておきます。
「レコード1行が準備できた時」で「キーの値をもとにレコードを更新または追加する」でデータを作り、「値が変更されているレコードを保存する」で実際にレコードを作成します。
これにより、レコード更新だけでなくレコード追加も可能になります。
テーブル更新
先程のレコード更新・追加のあとに「キーを指定してレコードを取得する」で「コピー先のレコード」を取得します。そして、この取得した「コピー先のレコード」に対して値をセットしていきます。
まずは「レコード1行が準備できた時」に「フィールド値をクリアする」で「コピー先のレコード」のテーブルをクリアします。
次に「他のアクションの実行が完了した時」で繋いだ後に「テーブル行をレコードとして取得する」で「コピー元のレコード」からテーブルを取得します。
それぞれで指定している「レコード」が違うことに注意してください。ここはかなり重要ポイントです。
そして「レコード1行が準備できた時」に「添付ファイルをコピーする」で「コピー元のレコード」のテーブル1行分の添付ファイルをコピーすれば準備完了です。
最後に「他のアクションの実行が完了した時」で繋いだ後に「テーブルに行を追加する」で「コピー先のレコード」のテーブルにコピーした値(や、その他のフィールド値)を追加します。
以上でテーブル各行に添付ファイルをコピーすることが可能です。
Webhookで起動しますので、通常のレコード保存時や「kintone Webhook を起動する」で複数レコードをコピーということも可能です。
まとめ
Job Runnerの仕組みとして、複数レコードやテーブルなどは「レコード1行が準備できた時」で枝分かれして処理されるようなイメージです。
枝分かれした処理が全て終わった後に、Job Runnerの方でまとめてレコード更新処理を実行します。
この点がアプリカスタマイズとは大きく違いますので、カスタマイズ作成時にはご注意ください。