はじめに

レコードをコピーする「やること」はCustomineで色々と用意されているのですが、

・添付ファイルが含まれるテーブル

のレコードコピーは簡単に作成することは出来ません。

そこで、「kintoneアプリのWebhook」を使って作成してみます。

 

今回のカスタマイズで出来ること

添付ファイルのあるテーブルも一緒にレコードをコピー(追加、更新)することが出来ます。それぞれのアプリのレコードはキーの値で紐付きます。ですので、キーが一致していれば複数レコードにコピーが可能です。


アプリ構成

コピー元とコピー先の2つのアプリを作成します。今回は両方とも同じフィールド構成にしています。

両方のアプリには以下のフィールドを作成しました

フィールド名

フィールドコード

テーブル

フィールドタイプ

キー

キー


文字列1行

行番号

行番号

テーブル

数値

添付ファイル

添付ファイル

テーブル

添付ファイル

Customineの設定

全体の設定はこのようになります。

設定が長いので、部分ごとに分けて説明します。

 

接続設定


Webhook を開始した時」に「kintone 接続設定を行う」でコピー元とコピー先の接続設定をします。その次に「Webhook から渡されたレコードを取得する」で渡されたレコードを取得します。

レコード更新・追加

テーブルを処理する前にレコードを作成しておきます。

レコード1行が準備できた時」で「キーの値をもとにレコードを更新または追加する」でデータを作り、「値が変更されているレコードを保存する」で実際にレコードを作成します。

これにより、レコード更新だけでなくレコード追加も可能になります。



テーブル更新

先程のレコード更新・追加のあとに「キーを指定してレコードを取得する」で「コピー先のレコード」を取得します。そして、この取得した「コピー先のレコード」に対して値をセットしていきます。


まずは「レコード1行が準備できた時」に「フィールド値をクリアする」で「コピー先のレコード」のテーブルをクリアします。

次に「他のアクションの実行が完了した時」で繋いだ後に「テーブル行をレコードとして取得する」で「コピー元のレコード」からテーブルを取得します。

それぞれで指定している「レコード」が違うことに注意してください。ここはかなり重要ポイントです。


そして「レコード1行が準備できた時」に「添付ファイルをコピーする」で「コピー元のレコード」のテーブル1行分の添付ファイルをコピーすれば準備完了です。

最後に「他のアクションの実行が完了した時」で繋いだ後に「テーブルに行を追加する」で「コピー先のレコード」のテーブルにコピーした値(や、その他のフィールド値)を追加します。



以上でテーブル各行に添付ファイルをコピーすることが可能です。

Webhookで起動しますので、通常のレコード保存時や「kintone Webhook を起動する」で複数レコードをコピーということも可能です。

 

まとめ

Job Runnerの仕組みとして、複数レコードやテーブルなどは「レコード1行が準備できた時」で枝分かれして処理されるようなイメージです。

枝分かれした処理が全て終わった後に、Job Runnerの方でまとめてレコード更新処理を実行します。

この点がアプリカスタマイズとは大きく違いますので、カスタマイズ作成時にはご注意ください。