PDF/Excel出力では、関連レコードのデータも一緒に出力することができます。
このTIPSではレコード内のフィールドと、関連レコード内のフィールドを1つの表に出す方法をお伝えします。
アプリの内容
kintoneのアプリストアにサンプルアプリとして用意されている案件管理アプリ、活動履歴アプリを例にします。
案件管理アプリ
関連レコード:活動履歴アプリより
最終目標
最終的には、一覧画面からこのようなExcelの表を作ることを目標とします。
テンプレートの作り方
テンプレートの構成としては、案件管理のレコードを出しつつ、関連レコードが複数行あれば、その行分だけ情報を展開するイメージです。また、関連レコードが0件の時も左側に案件管理のレコードは出るようにします。(このTIPSでは例示のために関連レコード0件の場合はレコードが出ない形のテンプレートも記載しています。)
上に記載した最終目標の図で1行目の「林田商会」の行が関連レコードが0件の例、図の8〜10行目の「株式会社中川工業」の行が関連レコードが複数行の例となります。
この「関連レコードが0件の時も案件管理のレコードは出す」というのが今回のポイントです。
関連レコードが0件の時は、そのレコードごと表示しないようにする
最終目標の形を作る前に、このようなテンプレートを考えてみます。
このテンプレートだと、関連レコードが0件のときには、3列目の関連レコードの$FOREACH(案件に紐づく活動履歴)〜$ENDの展開が行われず、結果、左側の顧客名や案件名も出力されません。3行目がすべてなくなるようなイメージです。
関連レコードが0件の時も関連レコードを空欄にして表示する
今回の目標である形にするには、関連レコードの件数に関係なく必ず表示するように設定する必要があります。
次のテンプレート例では1件目を必ず表示させるために、1件目の出力を明示的に指定しています。
このテンプレートでは先の例と比べ、2行目の記述を追加しました。対応日時の列を見てみると
$(案件に紐付く活動履歴)(0)(対応日時)
となっています。具体的には(案件に紐付く活動履歴)と(0)という指定が増えましたね。
なぜこんな事をしているのかですが、2行目は、よく見ると関連レコードの$FOREACH(案件に紐付く活動履歴)〜$ENDの外側にあります。
例えば「対応内容」フィールドは関連レコードに所属するフィールドですが、2行目は外側にあるので、フィールドコードだけでは設定情報が不足します。関連レコードのフィールドコードをカッコ付きで付け加えておくことにより、関連レコードのフィールドであると明示することができます。
また、ここは関連レコードの1件目を固定で表示させたいので、(0)をつけます。こうすることで、関連レコードの1件目ということを示すことができます。
(ちなみに2件目は(1)、3件目は(2)、と以下続きます)
顧客名、案件名はそのままです。3〜5列目とは書き方が違うので要注意です。
また、3行目3列目の関連レコード用の$FOREACH(案件に紐づく活動履歴)〜$ENDを見てみると
$FOREACH(案件に紐付く活動履歴)(1..)
となっています。ここで(1..)が増えていることに気がついたでしょうか?
これは、関連レコードの2件目以降すべての行、という意味になります。
関連レコードの1件目はテンプレートの2行目で指定しているので、それ以外はテンプレートの3行目で指定します。
ここの顧客名と案件名は、関連レコードの$FOREACH(案件に紐づく活動履歴)〜$ENDの中にありますので、親項目である意味の(..)をつけて
$(..)(顧客名)
というような書き方にします。
対応日時、対応内容、商談メモは関連レコードのフィールドのため、それぞれ、$(対応日時)、$(対応内容)、$(商談メモ)というようにフィールドコードだけの指定で大丈夫です。
出力してみよう
このテンプレートで案件アプリの一覧画面から出力してみてください。
冒頭に見せたイメージの一覧表が出てくると思います。
カスタマイズ例
カスタマイズ内容はこのようになります。出力のカスタマイズは基本通りのため説明は省略します。一覧画面に設置されたボタンを押すと、見えているレコードを対象に一覧表が出力されるカスタマイズとなっています。ファイル出力の”やること”は「Excelを出力する」「PDFを出力する」などを使います。
基本のPDF/Excel出力について詳しく知りたい場合は、カンタン!PDF出力入門 をご覧ください。
PDF/Excel出力のテンプレートに関する情報はこちらのリファレンスマニュアルに記載しています。
PDF/Excel出力では、$FOREACH〜$ENDの使い方次第でいろいろな出力が実現できます。ぜひお試しください!
実際に作成してみられてご不明な点などございましたら、お気軽にチャットでご質問ください。