ひとつの添付ファイルフィールドに添付された複数のファイルを、

ファイルひとつにつきテーブルの1行として分割して行追加する方法をご紹介します。


なお、このカスタマイズは詳細画面での使用を想定しています。

追加画面・編集画面では動きませんのでご注意ください。


kintone アプリの構成

テーブル外・テーブル内にそれぞれ一つずつ、添付ファイルフィールドを作成しました。

いずれも、フィールド名とフィールドコードは同一に設定しています。


Customine のカスタマイズ

ボタンをクリックすると、添付ファイルフィールドに添付されたファイルの数だけ繰り返し、テーブルに添付ファイルを添付した行を追加するカスタマイズを作成します。


まず、詳細画面にボタンを配置します。

やること「ボタンをメニュー位置に配置する」、条件には「詳細画面を表示した時」を指定します。


まず最初に、行追加先のテーブル行を削除します。


やること「フィールド値をクリアする」でもテーブル行を削除できますが、クリアの後で添付ファイルを添付する処理と競合する可能性があるため今回は使用できません。

そのため、下記のような方法でテーブル行を削除します。

  1. 絶対にレコードが取得されない条件でレコードを取得する
    ※今回は『レコード番号が0番のレコード』というあり得ない条件を指定します

  2. 取得したレコードをテーブルに書き出す際に、「既存のテーブル行はクリアする」を指定して書き出すことで、『既存のテーブル行をクリアしつつ、1行も書き出されない』状態にして、結果的にテーブル行をクリアする


実際のカスタマイズは下記のようになります。


やること「キーを指定してレコードを取得する」で「キーとなるフィールド」にレコードを番号を指定し、「キーの値」に0を指定します。この時「取得先アプリ」はどのアプリでも問題ありませんが、今回はカスタマイズ対象アプリを指定しています。


条件は「ボタンを押した時」です。


やること「レコードを指定アプリのテーブルに書き出す」で、「書き出し先アプリ」にカスタマイズ対象アプリ、「キーとなるフィールド」「キーの値」にレコード番号を指定し、画面に表示されているレコードを書き出し対象に指定します。


「元になるレコード」は0件のレコードを取得するアクション、「テーブルへのマッピング」は、どのフィールドでもよいので1つだけのフィールドに、


= ""


と指定します。


※元になるレコードが常に0行となり1行も書き出されないので何を指定してもよいのですが、最低でも1つのフィールドにはマッピングを指定する必要があるので、任意のフィールドに上記のようにマッピングしておきます。


「既存の行」には必ず、「既存のテーブル行はクリアする」を指定します。


これでテーブル行のクリアは完了しましたので、

コピー元の添付ファイルをコピーするために、やること「添付ファイルをコピーする」を指定します。


続いて、分割した添付ファイルを1ファイルずつテーブルの1行として書き出す準備をします。


テーブルへの行追加はやること「レコードを指定アプリのテーブルに書き出す」を使用しますが、このやることは「元になるレコード」が必須ですので、必ず1レコードだけが取得される条件でレコードを取得します。


今回は、やること「キーを指定してレコードを取得する」で画面に表示されているレコードをレコード番号を指定して取得します。

詳細画面に今表示されているレコードであれば、レコードが存在しますし、必ず1レコードだけが取得されるため、今回の用途に向いています。


実際のカスタマイズは下記です。

「キーとなるフィールド」と「キーの値」にはいずれもレコード番号を指定してください。


ここからは「リストから要素を取り出す」を使った、添付ファイル1つにつき1回の繰り返しです。


やること「リストから要素を取り出す」の「リスト」には、添付ファイルをコピーするアクション106を指定します。

条件は「いずれかのアクションの実行が完了した時」、アクションには108と109を指定してください。


アクション109では、リストから取り出した1つずつのファイルを使用し、画面に表示されているレコードのテーブル行に行を追加し、同時に添付ファイルを添付します。

やることは「レコードを指定アプリのテーブルに書き出す」を指定してください。

パラメーターには、以下のように指定します。

  • 書き出し先アプリ:カスタマイズ対象と同じアプリ

  • キーとなるフィールド:レコード番号

  • キーの値:レコード番号

  • 書き出し先テーブル:添付ファイルを含む行を追加したいテーブル

  • 元になるレコード:画面に表示されたレコードを取得するアクション(この例ではアクション108)

  • テーブルへのマッピング:

    • テーブル内の添付ファイルフィールド:「リストから要素を取り出す」のアクション(この例ではアクション107)

    • 既存の行:既存のテーブル行を残して追記する


条件は「リストから要素を取り出した時」です。


最後に、テーブルへの添付ファイルフィールドを貼付した行追加が完了したら、画面を再読み込みします。

やることは「画面をリロードする」、条件には「リストからの取り出しが終了した時」を指定してください。


以上でカスタマイズは完了です。

「kintone アプリへ登録」をクリックし、カスタマイズをkintone に登録して動きを確認してみてください。


ご不明点等ございましたら、チャットにてご質問ください!

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