Excel/PDF出力では、Excelファイル形式のテンプレートをもとに、kintoneのレコードデータを当てはめて、ExcelまたはPDFファイルを作成します。
予めの準備として、以下のものをご用意ください。
テンプレートファイルは、Excel形式で自由に作成することが可能です。
サンプルのアプリやテンプレートをダウンロードして、すぐ試すことのできるスターターキットもご用意しておりますので、合わせてご確認ください。
テンプレートファイルのシート名は、任意のシート名をつけることが可能です。
gusukuコマンドを使用して、フィールドの値をシート名に利用することも可能です。使用できるコマンドは以下になります。
$(フィールドコード) | 指定したフィールドコードを出力します。 |
複数のコマンドをつなげたり、固定文字列を交えて記述することができます。
シート名の先頭に「#」を付けると、一覧画面などから複数のレコード数分のシートを出力することが可能です。
#任意のシート名 | 選択したレコード数分のシートが追加されます。 |
シート名に「#」をつけてレコード数分のシートを出力する場合、以下の点に注意してください。
ほとんどgusukuコマンドは、フィールドコードの指定とともに利用します。フィールドコードは、日本語記述でも英語記述でもそのまま記述することが可能です。
注意すべき点
1つのセルに複数のコマンドをつなげたり、固定文字列を交えて記述することができます。
gusukuコマンド | 説明 |
---|---|
$(フィールドコード) | 指定したフィールドコードを出力します。 |
$STR(フィールドコード) | 指定したフィールドコードを文字列として扱い出力します。 |
$NUM(フィールドコード) | 指定したフィールドコードを数値として扱い出力します。 |
$DATE(フィールドコード) | 指定したフィールドコードを日付として扱い出力します。 デフォルトではJSTのタイムゾーンで処理されます。 タイムゾーンを指定する場合には $DATE,UTC(フィールドコード) とタイムゾーン名を指定するか、 $DATE,GMT+1:00(フィールドコード)とオフセットで指定します。 |
メタデータフィールドはいずれのシートでも利用可能です。
メタデータフィールド | 説明 |
---|---|
$($gusuku.meta.loginuser.code) | 帳票を出力したkintoneユーザのログイン名を出力します(Job Runner版では非対応です)。 |
$($gusuku.meta.loginuser.name) | 帳票を出力したkintoneユーザの表示名を出力します(Job Runner版では非対応です)。 |
$($gusuku.meta.loginuser.email) | 帳票を出力したkintoneユーザのメールアドレスを出力します(Job Runner版では非対応です)。 |
$DATE($gusuku.meta.timestamp) | 帳票を出力した日時を出力します。セルの書式設定でお好みの日付表記に変更してください。 |
$IFはセルの先頭でのみ動作します。そのため、他のgusukuコマンドと結合させて「$(a)$IF(…)」のような形で指定することはできません。
gusukuコマンド | 説明 |
---|---|
$IF,真ラベル,偽ラベル(フィールドコード) | フィールドコードで指定した値が"true"の文字列であれば「真ラベル」に、それ以外なら「偽ラベル」に書かれた文字列に置換します。true/falseを別の表記方法で出力したい場合に便利です。 |
$IF(フィールドコードA)請求あり$DATE(日付)請求はありません | フィールドコードAで指定した文字列が「請求あり」の場合、日付フィールドの日付を出力し、それ以外なら「請求はありません」と出力されます。 |
$IF(フィールドコードA)$("請求あり")$("請求があります")$("請求はありません") | フィールドコードAで指定した文字列が「請求あり」の場合、「請求があります」と出力し、それ以外なら「請求はありません」と出力されます。 上の例と似ていますが、「条件の値」「一致した時の値」「一致しなかった時の値」のうち2つ以上を続けて固定文字列にしたい場合、$("~~")形式にする必要があります。 |
gusukuコマンド | 説明 |
---|---|
$FOREACH および $END | $FOREACHを記述した行から、$ENDを記述した行までを、選択されたレコード数分ループします。 ループの中では、各レコードのフィールドコードを指定したgusukuコマンドを記述することが可能です。 |
gusukuコマンド | 説明 |
---|---|
$FOREACH(フィールドコード) および $END |
$FOREACHを記述した行から、$ENDを記述した行までをループします。 フィールドコードには、「テーブル」「関連レコード一覧」「添付ファイル」「文字列(複数行)」のフィールドコードを指定することが可能です。 ループの中ではテーブル内や関連レコードの参照しているアプリのフィールドコードを指定したgusukuコマンドや、後述の$または$IMGを指定することが可能です。 |
$IMG | $FOREACHで添付ファイルのフィールドコードを指定した場合、ループの中に記述することが可能です。 PNG/JPEG/GIF/BMP形式の画像が添付されている場合、そのカラムに出力されます(画像本来のサイズを超えて拡大はしません)。 |
$EXTIMG | $FOREACHで添付ファイルのフィールドコードを指定した場合、ループの中に記述することが可能です。 $IMGコマンド同様画像を出力しますが、こちらは画像本来のサイズを超えてカラムに合わせて拡大します。添付画像のサイズによっては、出力時に非常に荒い画像になりますのでご注意ください。 |
$(contentType) $(fileKey) $(name) $(size) |
$FOREACHで添付ファイルのフィールドコードを指定した場合、ループの中に記述することが可能です。 添付ファイルの各情報を出力することが可能です。 |
$ | $FOREACHで文字列(複数行)のフィールドコードを指定した場合、ループの中に記述することが可能です。 指定のフィールドコードを改行で区切った1行の文字列が出力されます。 |
FOREACHを使って、一部分だけ取り出して出力することが可能です。この機能をスライスと言います。
例: 1件目から10件目まで出力する。開始が0からであることに注意してください。
$FOREACH(0..9)
「..」の前後の数字は、省略することが可能で、省略すると「全て」の意味になります。
「5..」と指定すると、6行目から後ろ全てという指定になります。「..5」と指定すると、最初の6行という指定になります。
テーブルや関連レコードもスライスできます。この場合は、テーブルや関連レコードのフィールドコードを先に指定してからスライス範囲を指定します。
$FOREACH(テーブル名)(0..9)
$FOREACH(関連レコード名)(0..9)
また、改行を含む文字列の場合、1行1要素として指定可能です。
「添付ファイル」や「文字列(複数行)」などのフィールドは、FOREACHでループを記述する代わりに数値を直接指定することも可能です。
と指定すると、複数行フィールド名の値を改行で区切った1行目を出力することが可能です。
FOREACHでテーブル行や関連レコードを展開している場合、$(フィールドコード) で参照されるのはテーブルの列や関連レコードのフィールドと解釈されます。FOREACH 展開中は $(フィールドコード) で親レコードのフィールドを指定しても出力されません。
FOREACH内では $(..) で親レコードを参照できます。テーブル行や関連レコードの展開中の元レコードのフィールドを参照したい場合は次のように記載します。
$(..)(親レコードのフィールドコード)
以下の要素は$FOREACH~$ENDによる行の増減と連動して、位置や範囲が変わります。
セル内で改行したい場合は、セル設定で「折り返して全体を表示する」をオンにしてください。オフにしていると、文字列(複数行)フィールドの値に改行が含まれていても、セル内では改行されません。
リッチエディターフィールドの文字装飾などは、セルには反映されません。
日付フィールドや日時フィールドの値を特定の書式で出力したい場合、セル書式設定で希望の書式に設定し、$DATE で出力してください。
$DATE(出発日)
上記の例で、DATE を省略して $(出発日) とすると、kintone のフィールド値がそのまま文字列で出力され、セルの日付系書式設定は適用されません。
組織選択フィールドを用いて選択された組織名を出力したい場合、以下のように記述します。「(name)」を記述しない場合にはコードが出力されます。ユーザー選択、グループ選択の場合も同様です。
$(組織選択フィールドコード)(0)(name)
複数ある場合は数字の部分を増やしつつ、想定される個数を記述してください。
$(組織選択フィールドコード)(0)(name) $(組織選択フィールドコード)(1)(name)
添付ファイルを画像として出力したい場合は $IMG を使ってください。$IMG を使わずにそのまま出力した場合は、画像ではなくファイル名が出力されます。
1つの添付ファイルフィールドには複数のファイルが添付可能な点に注意が必要です。添付ファイルが高々1つしかないことが分かっている場合は「1つめの添付ファイル」という指定を行うために「(0)」をつけます。
$IMG(添付ファイル)(0)
フィールドに添付されているすべてのファイルを行方向に展開したい場合は、$FOREACH を使用します。
$FOREACH(添付ファイル)
$IMG
$END
PDF出力時には、フォントをはじめいくつかの制限事項があります。
詳細は「PDF出力時の制限事項」をご確認ください。
テンプレート内に配列数式がある場合、通常の数式に置き換わります。
テンプレート内で使用できる Excel 関数には制限があります。使用できる関数の一覧はこちらをご覧ください。
テンプレートのファイルサイズは 5MB が上限です。
テンプレートに含める行数は全シート合計で1万行が上限です。
関連レコード一覧は500レコードまで出力可能です。501レコード以上は出力できません。
シート名に「#」をつけてレコード毎にシートを出力する場合、元のシートのセル数は1万セル以内にする必要があります。
Microsoft Excel自体の制限 として、シートに含められる最大行数は1048576行(約100万行)です。100万行を超えるような大量のレコードを$FOREACHで展開すると、この制限によりエラーが発生します。
$FOREACH~$END内のセルにつけられたコメントは、展開後に削除されます。