はじめに
kintone の1つの添付ファイルフィールドに複数のファイルを添付する方法を紹介します。
入力アイテム「ファイル選択」では1つのファイルしか添付することができませんが、ウィジェット「編集テーブル」と組み合わせることによって、1つの添付ファイルフィールドに複数の添付ファイルを添付することが可能となります。
想定するページ
エブリサイトでは以下のようなページを用意します。
※赤色・緑色の枠線と緑色の文字は本記事の解説用に追加したもので、実際のページには存在しません。
タイルは以下のような構成となっており、1番のタイルにはウィジェット「編集テーブル」、2番のタイルには「シンプル縦フォーム」を使用して、以下のアイテムを配置します。
タイル配置
編集テーブルに配置するアイテム
※「取り出し用アイテム」は今回のカスタマイズのために必要な処理用のフィールドとなります。kintone アプリには無いフィールドですが、上記のように指定してください。
シンプル縦フォームに配置するアイテム
アップロード先の kintone アプリ
kintone アプリは下図のように「添付ファイル」フィールドのみのシンプルな構成としてます。
kintone 接続設定
上記アプリにレコードを追加・更新できるように API トークンを用意し、エブリサイトで「kintone 接続設定」を作成します。なお、用意する API トークンにはレコード閲覧・レコード追加・レコード編集の権限をつけてください。
処理概要
現在エブリサイトで提供している仕組みでは、やること「レコードを追加する」ですべての添付ファイルを添付することができないため、まずは1つ添付したレコードを作成し、その後添付ファイル数分、更新処理を繰り返す作りとします。
「ページ内処理」での具体的な設定は後述しますが、処理の流れを図示すると以下のようになります。(図中の数字は、ページ内処理におけるアクション番号です)
ページ内処理
では、上記を踏まえて処理を作成していきます。
まずは、「処理中表示を行う」です。このアクションは無くても動きますが、添付ファイルのアップロードは件数やサイズによって数秒~数十秒、数分かかる可能性があるため、利用者に「アップロード中」であることを示すための表示をします。
続いて、2番のアクションは「テーブルやリストウィジェットから行を取り出す」です。取り出すアイテムには編集テーブルウィジェット内に配置した「取り出し用アイテム」を指定します。
※ファイルが添付されている「ファイル選択」アイテムではない点に注意が必要です。
また、条件は「いずれかのアクションの実行が完了した時」で、アクション番号 1,5,7 を指定します。5番と7番のアクションを作成する前には指定ができないので、一旦 1 のみを指定して、後で 5,7 のアクションを作成した後に忘れずに指定しましょう。
続いて、3番は「kintone にファイルをアップロードする」です。処理概要で記載した通り、この処理は添付ファイルの件数分繰り返されます。
4番は「kintone にレコードを追加する」です。追加条件を指定することで、「処理用フラグ」アイテムに「1」という値が入っていないときのみ動きます。
続いて、5番で「入力アイテムの値をセットする」を使用して、「処理用フラグ」アイテムに「1」という値をセットしています。この5番のアクションが動くことによって4番のアクションは今後動かず、このあと設定する6番のアクションが動くようになります。
6番のアクションでは「クエリで条件を指定して kintone からレコードを取得する」を使用して4番のアクションで追加したレコードを取得しています。これは処理概要でも記載した通り、一度追加したレコードに対して添付ファイルを追加して更新処理を行うためです。追加条件を指定することで、「処理用フラグ」アイテムに「1」という値が入っているとき(つまり、2件目以降の添付ファイルを処理する時)のみ動きます。
7番では「kintone のレコードを更新する」を使用して4番のアクションで追加したレコードに対して、添付ファイルを追加しています。
添付ファイルを追加する際には append 関数を使用することで、すでにkintone のレコードに添付されているファイルに追記する形で、添付ファイルを追加することができます。
セットする値 記入例
= append( $6[0].添付ファイル, $3 )
8番に「処理中表示を終了する」を設定し、これによってすべての処理が終わったあとに処理中画面の表示を消しています。
「処理用フラグ」はサイト利用者にとっては意味のない上記処理を行うためのアイテムですので、「アイテムを非表示にする」で利用者には見えないようにしておくことをオススメします。
その他、添付ファイルが添付されていない時に送信できないようにするために「入力エラーをチェックする」など、必要に応じて設定を追加するとより使い勝手が向上します。
ページ内処理全設定
ページ内処理のすべての設定をまとめると以下のようになります。
まとめ・注意点
今回はウィジェット「編集テーブル」と組み合わせることで複数の添付ファイルをkintoneの1フィールドに添付する方法を紹介しました。少し複雑な処理となるため将来的にはもう少し簡単な方法で複数のファイルを添付できるように検討しております。現時点での実装時期は未定ですが、将来のアップデートをご期待ください。
また、本記事で紹介した内容は何度もレコードを取得・更新を行うため、添付ファイル数が増えるにしたがって API リクエスト数が増えることとなります。その点を踏まえてご検討ください。
















