一つの添付ファイルをコピーし、複数の別のアプリや同じアプリの別レコードに書き出したい場合、単純にコピーした添付ファイルを複数個所に書き出すとエラーとなり書き出しできません。
これは、やること「添付ファイルをコピーする」でコピーした添付ファイルは、一度書き出しすると再利用できなくなるためです。
この記事では具体的なカスタマイズ例を元に現象と修正方法をご説明します。
【実行時にエラーとなるカスタマイズ例】
実行時にエラーとなるカスタマイズの処理の流れを次に示します。
具体的な例としては次のようなカスタマイズになります。
まずボタンを配置し、添付ファイルをコピーします。
コピーした添付ファイルを、二つの添付ファイルフィールドに書き込みます。
カスタマイズをkintoneアプリへ登録し、実行してみるとアクション番号3と4のうち、先に実行されたアクションは問題なく実行され、添付ファイルがセットされます。
しかし、後に実行された方のアクションは下記のようなエラーが表示され、添付ファイルのセットに失敗します。
エラー内容:
kintone API 呼び出しがエラーになりました。
[kintone からの応答]
指定したファイル(id:XXX)が見つかりません。
Code: GAIA_BL01
【カスタマイズ修正例】
上のようなエラーを回避するには、たとえコピー”元”の添付ファイルフィールドが一つであっても、コピー”先”のフィールドの数と同じ数の、やること「添付ファイルをコピーする」のアクションが必要です。
修正例では、コピー”先”のフィールドは2個ですので、「添付ファイルをコピーする」のアクションを2個になるよう追加します。
今回の例では、アクション番号5にて、アクション番号2と同じフィールドにセットされた添付ファイルを改めてコピーする処理を追加しました。
次に、アクション番号4のやることの「マッピング」を、先ほど新しく追加したアクション番号5に書き換えます。
また、もともと条件に指定してあった「他のアクションの実行が完了した時」のアクションについても、アクション番号5に変更しました。
アクション番号2でコピーした添付ファイルはアクション番号3で書き込み
アクション番号5でコピーした添付ファイルはアクション番号4で書き込み
とすることで、エラーなく添付ファイルがコピーされるようになります。
上記のようなカスタマイズにすれば、一つの添付ファイルを複数のレコードにコピーすることは実現できます。
おわりに
こういったカスタマイズを行う際に気を付けたい点
ただ、ここで一度考えてみていただきたい観点があります。それは「本当に添付ファイルのコピーは必要なのか?」という点です。
というのも、添付ファイルはレコードと比較してデータサイズが大きい場合が多く、ファイル数が増えてくるとディスク容量を圧迫する場合があります。
添付ファイルコピー以外の方法で複数アプリで同じ添付ファイルを共有する方法としては、例えばコピー後の添付ファイルを変更する予定がない場合は、コピー元の kintone アプリのレコードを関連レコード一覧で表示する、といった対応も一つの選択肢かと思います。
リストを使った複数レコードの一括処理について
また併せて、複数レコードでのファイルコピー処理を行いたい場合は、やること「リストから要素を取り出す」を使って頂く方法があります。
この方法については、 「リストから要素を取り出す」を使って、ループ処理でレコードの内容によってやることを変えるカスタマイズ の「添付ファイルコピー」の段落に詳しいので、併せてご覧下さい。