Excelを出力する」「PDFを出力する」を利用するときに、kintoneのテーブルを帳票の明細表に使うことはよくありますが、ここでは2つのパターンのテンプレート設定方法をご説明します。


テーブル行を自動で展開する場合(FOREACH〜END)

テーブルを表形式で出力するためには、$FOREACH〜$ENDを使うと簡単に設定ができます。この書き方の場合テーブル行の数だけ自動的に展開され、テーブルの行数が少ない場合は短い表になり、行数が多い場合は長い表になります。

何行になってもいいから存在する行数について全てを出力したい場合はこちらの方法がおすすめです。


テンプレートの内容


kintoneのレコード詳細画面


出力結果


テーブルの値を固定行で出力する場合

帳票によっては、明細表はかならず一定の行数の枠にしておきたい、明細内容が少なくても一定の行数の枠を表示した表にしたい、というような要望があると思います。

そういう場合は、テンプレートに次のように記載してください。


$(テーブルのフィールドコード)(0)(テーブル内のフィールドのフィールドコード)


間の(0)のところが、テーブルの何行目か?を表しています。

(0)だとテーブルの1行目、(1)だとテーブルの2行目、(2)だとテーブルの3行目……というように続きます。


具体的には下記の例をご覧ください。この例では「テンプレートの内容」としては10行分(ヘッダ1行、データ9行分)の枠を用意していますが、実際のkintoneのテーブルには3行しかないため、「出力結果」の4行目以降は空欄で出力されます。


テンプレートの内容


kintoneのレコード詳細画面


出力結果


※この例では、テーブルの9行目までしか出力されません。


テーブル行数に応じてテンプレートを分ける方法

上記の例で、もしテーブルが10行以上になる可能性がある場合、10行以上の出力に対応したテンプレートを別途用意するなどの対策が必要です。


下記のようなカスタマイズにより、テーブル行数によって、使用するテンプレートを分けることができます。


まずアクション221 で、条件「ボタンを押した時」に、やること「テーブル行数をカウントする」で出力対象のテーブル行数を取得します。


このアクション結果を、追加条件「アクションの結果が特定の値ならば」で比較することで、テーブルが10行未満の場合(アクション222・228) と 10行以上の場合(アクション229・230)でアクションを分岐します。


分岐後の各アクションでは、やること「キーを指定してレコードを取得する」を使用し、テンプレートを保存しているアプリから、テンプレートが添付されたレコードを取得します。

そして、取得したレコードを「Excelを出力する」の【テンプレートレコード】に指定することで、テーブル行数に応じたテンプレートで帳票を出力できます。

※「PDFを出力する」の場合も同様です


テーブルが10行未満


アクション222:

 やること「キーを指定してレコードを取得する

【取得先アプリ】

Templates

【キーとなるフィールド】

テンプレート名称(Str_テンプレート名称)

【キーの値】

明細表(10行未満)

【最大取得件数】


 条件「他のアクションの実行が完了した時

 追加条件「アクションの結果が特定の値ならば

【アクション】

221

【条件】

小さい(<)

【比較値】

10


アクション228:

 やること「Excelを出力する

【gusuku APIキー】

*****

【データレコード】

【テンプレートレコード】

222

【テンプレートフィールド】

テンプレート(File_テンプレート)

【出力先】

ダウンロード

【ファイル名】

明細表(10行未満)


 条件「他のアクションの実行が完了した時

 追加条件「レコード件数が1件以上ならば


テーブルが10行以上


アクション229:

 やること「キーを指定してレコードを取得する

【取得先アプリ】

Templates

【キーとなるフィールド】

テンプレート名称(Str_テンプレート名称)

【キーの値】

明細表(10行以上)

【最大取得件数】


 条件「他のアクションの実行が完了した時

 追加条件「アクションの結果が特定の値ならば

【アクション】

221

【条件】

大きいか等しい(>=)

【比較値】

10


アクション230:

 やること「Excelを出力する

【gusuku APIキー】

*****

【データレコード】

【テンプレートレコード】

229

【テンプレートフィールド】

テンプレート(File_テンプレート)

【出力先】

ダウンロード

【ファイル名】

明細表(10行以上)


 条件「他のアクションの実行が完了した時

 追加条件「レコード件数が1件以上ならば


まとめ

このように、kintoneのテーブルを出力する場合には、$FOREACH〜$ENDを利用して自動的に展開する方法と、$(テーブルのフィールドコード)(0)(テーブル内のフィールドのフィールドコード)を使って行指定をして出力する方法があります。


出力したい帳票の形式に合わせ、これらの方法を選択してみてください。


また、実際に作成してみられてご不明な点などございましたら、お気軽にチャットでご質問ください。