カスタマインでは、やること「添付ファイルをまとめてダウンロードする」を使用して、複数の添付ファイルを zipファイルにまとめてダウンロードできます。

【zipファイル内の階層】パラメータでは、フィールドの値や関数などを使用して、ダウンロードする zipファイル内のフォルダー階層を指定できます。


この記事では、フォルダー階層を指定する方法を、具体例とあわせていくつか紹介します。


なお、添付ファイルをまとめてダウンロードするカスタマイズの基本的な設定方法については、次の記事をご覧ください。



アプリの設定

まず、本記事の設定例で使用する「案件書類管理」アプリの設定を紹介します。


フィールド名

フィールドコード

フィールドタイプ

備考

案件番号

案件番号

文字列(1行)


案件名

案件名

文字列(1行)


顧客名

顧客名

文字列(1行)


登録日

登録日

日付


書類

書類

テーブル


書類名

書類名

文字列(1行)

テーブル(書類)内フィールド

書類区分

書類区分

ドロップダウン

テーブル(書類)内フィールド

選択肢:見積書、提案書、契約書、稟議書、検討資料

添付ファイル

添付ファイル

添付ファイル

テーブル(書類)内フィールド




またサンプルとして、下記のようなレコードを用意しています。





カスタマインの設定

カスタマインに「案件書類管理」アプリのカスタマイズを追加し、下記のアクションを設定します。



本記事で紹介する例はすべて、「案件書類管理」アプリの一覧画面に表示されたレコードを対象に、「添付ファイルをまとめてダウンロードする」を実行する想定です。以降では、【zipファイル内の階層】パラメータの指定によるフォルダー階層の違いを紹介します。



レコードごとにフォルダーを分ける

【zipファイル内の階層】パラメータに $id を指定すると、レコードID ごとにフォルダーを分けることができます。


【zipファイル内の階層】

${$id}



今回の例では、レコードID が「1」から「5」のレコードに添付されたファイルが、次のようなフォルダー構成でダウンロードされます。




フィールドの値を使ってフォルダーを分ける

【zipファイル内の階層】パラメータには、フィールドの値を指定できます。

ここでは、次のように「顧客名」フィールドを指定します。


【zipファイル内の階層】

${顧客名}



今回の例では、案件番号「PJ-001」と「PJ-003」の顧客名がどちらも「サンプル商事」のため、2つのレコードの添付ファイルが同じ「サンプル商事」フォルダーにまとめられます。




また、/ を使用して、複数階層のフォルダーを作成することもできます。

例えば、次のように指定すると、「顧客名」>「案件番号」の階層になります。


【zipファイル内の階層】

${顧客名}/${案件番号}



今回の例では、「サンプル商事」フォルダーの中に「PJ-001」と「PJ-003」のフォルダーが作成され、それぞれのレコードの添付ファイルが格納されます。




テーブル内のフィールドの値をフォルダー名に使う

添付ファイルがテーブル内にある場合、【zipファイル内の階層】パラメータでは、$tableRow を使用して添付ファイルがあるテーブルの行を参照できます。


ここでは、「書類」テーブル内の添付ファイルを、「書類区分」(テーブル内フィールド)ごとに分けるよう、次のように指定します。


【zipファイル内の階層】

${書類[$tableRow - 1].書類区分}



$tableRow には、添付ファイルが存在するテーブルの行番号が入ります。

テーブルの配列は 0 から始まるため、$tableRow - 1 とすることで、添付ファイルと同じ行の「書類区分」フィールドの値を参照できます。


今回の例では、次のように「書類区分」ごとのフォルダーに添付ファイルが格納されます。




関数を使ってフォルダー名を指定する

【zipファイル内の階層】パラメータには、フィールドの値をそのままフォルダー名にするだけでなく、関数を使用してフォルダー名を指定することもできます。


条件によってフォルダーを分ける

ここでは、書類区分が「稟議書」または「検討資料」の場合は「社内用」、それ以外の場合は「社外用」のフォルダーに分けるよう、次のように指定します。


【zipファイル内の階層】

${if(or(["稟議書", "検討資料"] = 書類[$tableRow - 1].書類区分), "社内用", "社外用")}



この式では、書類区分が「稟議書」または「検討資料」に該当するかを or 関数 で判定し、if 関数 で「社内用」・「社外用」のフォルダー名を切り替えています。

今回の例では、次のように添付ファイルが分けられます。

  • 稟議書、検討資料 → 「社内用」

  • 見積書、提案書、契約書 → 「社外用」



このように関数を使用すると、kintone上で管理している値とは異なる分類で、ダウンロードするファイルを整理できます。


フォルダー名の連番をゼロ埋めする

フォルダー名に使用する数値の桁数を揃えたい場合は、right 関数 を使用してゼロ埋めすることができます。


ここでは、レコードID をゼロ埋めして5桁に揃え、その後ろに「案件名」フィールドの値を付けるよう、次のように指定します。


【zipファイル内の階層】

${right("00000" & $id, 5)}_${案件名}



この式では、レコードID の前に「00000」を付け、right 関数 で右側から5文字取得することで、レコードID を5桁に揃えています。


※この例では5桁に揃えているため、6桁以上のレコードIDでは正しい値を取得できません。実際に使用するレコードIDの桁数にあわせて、先頭に付ける「0」の数と right 関数 で取得する文字数を調整してください。



今回の例では、次のようにレコードID の桁数が揃ったフォルダーが作成されます。



このように桁数を揃えることで、フォルダーを名前順に並べた場合にも、レコードIDと同じ順序で確認しやすくなります。



まとめ

以上が、やること「添付ファイルをまとめてダウンロードする」の【zipファイル内の階層】パラメータを使用して、zipファイル内のフォルダー構成を指定する様々な方法でした。


フィールドの値や $id、$tableRow などの特殊な値、関数を組み合わせて指定することもできますので、ダウンロード後にファイルを整理したい単位にあわせて活用してみてください。


ご不明な点がございましたら、チャット でお問い合わせください。

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