コンテンツへスキップ
製品ページに戻る

Umitake ドキュメントジェネレーター for kintone ユーザーマニュアル

目次

  1. 概要
  2. インストール
  3. プラグイン設定
  4. テンプレートの準備
  5. テンプレートタグ仕様
  6. ドキュメントの生成
  7. ラベル印刷
  8. 注意事項・制限
  9. トラブルシューティング

概要

Umitake ドキュメントジェネレーター for kintone は、kintoneのレコードデータをもとに Word(DOCX)・Excel(XLSX)・PDF ドキュメントを自動生成するプラグインです。

主な機能:

  • レコードのフィールド値をテンプレートに差し込んで出力
  • サブテーブルフィールドのループ展開
  • 関連レコード一覧フィールドのループ展開(docx / PDF はネストループも対応)
  • 日付・通貨・数値の書式指定
  • 出力ファイルを同一アプリまたは別アプリの添付フィールドに保存
  • ボタンクリックまたはステータス変更による出力トリガー
  • レコード一覧画面からの一括出力(絞り込み条件に一致するすべてのレコードを処理)
  • 複数レコードをDOCXラベルシートにまとめて出力するラベル印刷(1シートあたりN件、ZIPで一括ダウンロード)

インストール

  1. kintone管理画面(歯車アイコン)を開く
  2. プラグイン をクリック
  3. プラグインの読み込み をクリック
  4. kintone-doc-generator.zip を選択してアップロード
  5. アップロード完了後、対象アプリの設定画面を開く
  6. プラグイン タブから「Umitake ドキュメントジェネレーター for kintone」を追加

プラグイン設定

対象アプリの設定画面で「Umitake ドキュメントジェネレーター for kintone」の 設定 をクリックすると、プラグイン設定画面が開きます。

画面上部に設定サイズメーターが表示されます。kintoneプラグインの設定は256KBが上限です。PDFのHTMLテンプレートが大きい場合はサイズに注意してください。

ドキュメント設定の追加

「+ ドキュメント設定を追加」 ボタンをクリックして、出力設定を1件追加します。1つのアプリに複数の設定を登録できます。

各設定カードのヘッダー右側には以下のボタンが表示されます。

ボタン動作
⧉設定を複製(直下に同内容のコピーを作成)
↑ / ↓設定の順序を変更
×設定を削除

テンプレートソース

出力形式に応じてテンプレートの指定方法が異なります。

DOCX / XLSX の場合

テンプレートファイルは別のkintoneアプリ(テンプレート保管アプリ)に添付ファイルとして登録します。

テンプレート保管アプリの準備手順:

  1. 新規kintoneアプリを作成(例: 「テンプレート管理」)
  2. 添付ファイルフィールドを追加
  3. テンプレートファイル(.docx または .xlsx)をレコードに添付して保存
  4. レコードのURLからレコード番号(例: 123)を確認

プラグイン設定での指定:

項目説明例
アプリIDテンプレート保管アプリのID100
レコードIDテンプレートが添付されているレコード番号1
フィールドコード添付ファイルフィールドのフィールドコードテンプレートファイル
ファイル名添付ファイルのファイル名(複数添付時の識別用)請求書テンプレート.docx

PDF の場合

PDFのテンプレートソースは3種類から選択できます。

方式説明
HTMLから作成設定画面のHTMLエディタに直接HTMLを記述
DOCXから作成DOCXテンプレートをもとに生成し、バックエンドサービスでPDFに変換
XLSXから作成XLSXテンプレートをもとに生成し、バックエンドサービスでPDFに変換

HTMLから作成の場合:

設定画面内のHTMLエディタに直接HTMLを記述します。フィールド一覧からタグを挿入するボタンも利用できます。

ページ設定:

項目選択肢
ページサイズA4 / A3 / Letter
向き縦(portrait)/ 横(landscape)

DOCXから作成 / XLSXから作成の場合:

DOCXまたはXLSXのテンプレートをDOCX/XLSX出力と同じ形式で作成し、テンプレート保管アプリに添付します。設定項目はDOCX/XLSX出力と同様です(アプリID・レコードID・フィールドコード・ファイル名)。

注意: DOCX/XLSXからのPDF変換は、バックエンドの変換サービスを使用します。有効なライセンスが必要です。


出力先

生成したファイルの保存先を指定します。

同一アプリ(添付フィールド)

項目説明
フィールドコード保存先の添付ファイルフィールド
追記モードON: 既存ファイルを残して追加 / OFF: 上書き

設定例: フィールドコード generated_docs、追記モード ON

別アプリ

項目説明例
アプリID出力先アプリのID(選択式)—
添付ファイルフィールドコード出力先の添付ファイルフィールド(選択式)—
レコード特定クエリ保存先レコードを絞り込むkintoneクエリ(タグ使用可)顧客コード = "${顧客コード}"
アプリIDを格納するフィールド新規作成時に出力元アプリIDを書き込むフィールド(文字列1行・数値から選択、任意)—
レコードIDを格納するフィールド新規作成時に出力元レコードIDを書き込むフィールド(文字列1行・数値・ルックアップから選択、任意)—
追記モードON: 既存ファイルを残して追加 / OFF: 上書き—

クエリにはフィールドタグ(${フィールドコード})を使用できます。クエリで複数レコードが一致した場合は最初のレコードに保存されます。

クエリが空またはマッチしない場合: 出力先アプリに新規レコードを作成してファイルを保存します。「アプリIDを格納するフィールド」と「レコードIDを格納するフィールド」を指定しておくと、新規作成時に出力元のアプリIDとレコードID($id)が自動で書き込まれます。ルックアップフィールドを指定すると、ルックアップが取得する値も一括コピーできます。


ファイル名テンプレート

生成するファイルのファイル名を指定します。フィールドタグや生成日時タグを使って動的なファイル名にできます。

請求書_${顧客名}_${作成日 format="YYYYMMDD"}
報告書_${@date format="YYYYMMDD"}

拡張子(.docx、.xlsx、.pdf)は指定不要です。プラグインが自動で付与します。

${@date} / ${@datetime} タグを使うと、ドキュメント生成を実行した日付・日時をファイル名に入れられます(format オプションも指定可能)。詳細は生成日付・日時タグを参照してください。

ヒント: ファイル名に使えないOS特殊文字(/、\、:、*、?、"、<、>、|)はアンダースコアに自動変換されます。


出力トリガー

ドキュメント生成のきっかけを指定します。

ボタン

レコード詳細画面にボタンを表示します。

項目説明
ボタンラベルレコード詳細画面のボタンに表示するテキスト(例: 請求書を作成)
ボタンの表示位置ヘッダー(既定) / スペースフィールド
スペースフィールドの要素ID表示位置が「スペースフィールド」の場合に指定。フォームレイアウトに配置した「スペース」フィールドの要素ID(kintoneのフォーム設定画面でスペースフィールドをダブルクリック→詳細設定から確認・設定できます)。モバイル版にも表示するには、モバイル版レイアウトにも同じスペースフィールドを配置してください。要素IDが未設定・誤り、または対象フィールドが見つからない場合はヘッダーに表示されます
一覧画面で一括出力を有効にするONにするとレコード一覧画面にも一括出力ボタンが表示される
一括出力ボタンのラベル一覧画面の一括出力ボタンに表示するテキスト(未入力の場合はボタンラベルを使用)。この一括出力ボタンと、一覧画面のラベル印刷ボタンは常にヘッダーメニューに表示されます(スペースフィールドはレコード詳細画面のみの機能です)

ステータス変更

プロセス管理のステータスが変わったときに実行します。

項目説明
対象ステータス変更後のステータス名(例: 承認済み)
自動実行ON: 確認なしで即実行 / OFF: 確認ダイアログを表示

テンプレートの準備

DOCXテンプレート

WordでDOCXファイルを作成し、差し込みたい箇所にタグを記述します。

ポイント:

  • タグは ${フィールドコード} の形式
  • Wordの「フィールド」機能ではなく、通常のテキストとして入力
  • フォント・サイズ・色などの書式はタグに適用したものが出力に反映される
  • サブテーブルのループは表(テーブル)の行に記述

作成例(請求書):

請求書

請求先: ${顧客名}
請求日: ${請求日 format="YYYY年MM月DD日"}
お支払期限: ${期限 format="YYYY年MM月DD日"}

| 商品名 | 数量 | 単価 | 金額 |
|--------|------|------|------|
| ${#明細} | ${商品名} | ${数量} | ${単価 currency="JPY"} | ${合計 currency="JPY"} | ${/明細} |

合計金額: ${合計金額 currency="JPY"}

XLSXテンプレート

Excelでxlsxファイルを作成し、タグを各セルに記述します。

基本ルール:

  • 1セルに1タグを記述
  • セルの書式(フォント・背景色・罫線・数値書式など)はそのまま保持される

サブテーブルのループ:

ループは「マーカー行」と「テンプレート行」で構成します。

行A列B列C列D列
10${#明細}
11${商品名}${数量}${単価 currency="JPY"}${合計 currency="JPY"}
12${/明細}
  • マーカー行(${#〜} / ${/〜} のみの行)は出力に含まれません
  • テンプレート行はサブテーブルの行数分だけ複製されます
  • テンプレート行を複数行にすると、1サブテーブル行につき複数行を展開できます
  • マーカー行に他のセル内容がある場合、その内容も出力されます

PDFテンプレート

PDFの生成方式は3種類あります。

HTMLから作成

プラグイン設定画面のHTMLエディタでHTMLを作成します。

作成のヒント:

  • エディタ右上の「全画面で編集」ボタンで全画面モーダルに拡大できます
  • フォント・レイアウトはCSSで調整
  • 日本語フォントはブラウザのデフォルトフォントを使用

サブテーブルのループ:

HTMLコメントでループ範囲を指定します。

<table>
  <tr>
    <th>商品名</th>
    <th>数量</th>
    <th>単価</th>
  </tr>
  <!-- ${#明細} -->
  <tr>
    <td>${商品名}</td>
    <td>${数量}</td>
    <td>${単価 currency="JPY"}</td>
  </tr>
  <!-- ${/明細} -->
</table>

DOCXから作成

DOCXテンプレートをDOCX出力と同じ形式で作成します(タグ記法・ループ構文は同一)。生成されたDOCXはバックエンドの変換サービスでPDFに変換されます。

→ テンプレートの作成方法は「DOCXテンプレート」を参照してください。

XLSXから作成

XLSXテンプレートをXLSX出力と同じ形式で作成します(タグ記法・ループ構文は同一)。生成されたXLSXはバックエンドの変換サービスでPDFに変換されます。

→ テンプレートの作成方法は「XLSXテンプレート」を参照してください。


テンプレートタグ仕様

オプション一覧

タグには オプション名="値" の形式でオプションを付加できます。フラグ型オプション(image・qrcode・barcode・allOptions)は値なしで記述します。

${フィールドコード オプション名="値" 別オプション="値"}
${フィールドコード image}
${フィールドコード allOptions checked="☑" unchecked="☐"}

全オプション一覧:

オプション値デフォルト主な対象フィールド説明
formatDay.js書式文字列—日付・日時・@date・@datetime日付・日時の出力書式を指定(例: "YYYY年MM月DD日")
timezoneタイムゾーン名ブラウザのTZ日付・日時・@date・@datetime出力タイムゾーン(例: "Asia/Tokyo"、"America/New_York")
currency通貨コード—数値通貨記号付き桁区切りフォーマット(JPY・USD・EUR・GBP 等)
number"true" / 桁数—数値通貨記号なし桁区切り("2" = 小数2桁固定、"true" = 整数)
separator任意文字列", "チェックボックス・複数選択・ユーザー/組織/グループ選択配列フィールドの区切り文字("\n" で改行区切り)
prefix任意文字列—全フィールド値が空でない場合のみ先頭に付加する文字列
suffix任意文字列—全フィールド値が空でない場合のみ末尾に付加する文字列
keyプロパティ名nameユーザー選択・組織選択・グループ選択取得するオブジェクトプロパティ("name"・"code" 等)
allOptions(フラグ)—チェックボックス・複数選択全選択肢を選択状態付きで出力する
checked任意文字列"☑"allOptions 使用時選択済み項目の先頭に付けるマーク
unchecked任意文字列"☐"allOptions 使用時未選択項目の先頭に付けるマーク
image(フラグ)—添付ファイル添付画像をドキュメントに埋め込む
index整数0添付ファイル(image 使用時)複数添付時に取得するファイルのインデックス(0始まり)
widthピクセル数200image・qrcode・barcode挿入する画像の横幅(px)
heightピクセル数150image・barcode挿入する画像の縦幅(px)
qrcode(フラグ)—任意フィールドフィールド値からQRコードを生成して挿入
barcode(フラグ)—任意フィールドフィールド値からバーコードを生成して挿入
typeバーコード形式"CODE128"barcode 使用時バーコードの形式(詳細はQRコード・バーコード参照)

基本タグ

${フィールドコード}

kintoneのフィールドコードをそのまま記述します。フィールドコードはkintoneのフォーム設定で確認できます。

対応フィールド種別:

フィールド種別出力内容
文字列(1行)/ 文字列(複数行)入力テキスト
数値数値(文字列として)
日付 / 日時 / 時刻ISO形式(例: 2024-01-15) ※ format オプションで書式変換
リンクURL文字列
ラジオボタン / ドロップダウン選択値
チェックボックス / 複数選択選択値をカンマ区切りで結合
ユーザー選択 / 組織選択 / グループ選択名前をカンマ区切りで結合
ルックアップ参照元の値
計算計算結果
添付ファイルimage オプションで画像を差し込み(画像差し込み参照)
サブテーブルループタグで展開
関連レコード一覧ループタグで展開

日付フォーマット

${フィールドコード format="書式文字列"}

日付・日時フィールドの値を指定した書式で出力します。

書式記号意味例
YYYY西暦4桁2024
YY西暦2桁24
MM月(2桁)01
M月1
DD日(2桁)05
D日5
HH時(24時間)14
mm分30
ss秒00

記述例:

${作成日 format="YYYY年MM月DD日"}        → 2024年01月15日
${作成日 format="YYYY/MM/DD"}           → 2024/01/15
${作成日 format="MM月DD日(ddd)"}      → 01月15日(月)
${更新日時 format="YYYY-MM-DD HH:mm"}  → 2024-01-15 14:30

timezone オプションと組み合わせることで、任意のタイムゾーンで出力できます。

${更新日時 format="YYYY-MM-DD HH:mm" timezone="America/New_York"}

通貨フォーマット

${フィールドコード currency="通貨コード"}

数値フィールドの値を通貨記号付きでフォーマットします。

通貨コード出力例
JPY¥1,000
USD$1,000.00
EUR€1,000.00
GBP£1,000.00
${金額 currency="JPY"}     → ¥1,234,567
${amount currency="USD"}   → $1,234.56

数値フォーマット

${フィールドコード number="オプション値"}

通貨記号なしで数値をフォーマットします(桁区切りのみ)。

オプション値出力例説明
"true" または "0"1,234,567整数として桁区切り
"1"1,234.6小数1桁固定
"2"1,234,567.89小数2桁固定
${在庫数 number="true"}          → 1,234
${単価 number="2"}               → 1,234.00
${達成率 number="1"}             → 98.5

生成日付・日時タグ

ドキュメント生成を実行した時点の日付・日時を出力します。kintoneのフィールドではなくシステムタグです。

${@date}
${@datetime}
タグデフォルト出力例説明
${@date}2024-01-15生成日付
${@datetime}2024-01-15 09:30:00生成日時

format オプションと timezone オプションを組み合わせられます。

${@date format="YYYY年MM月DD日"}                          → 2024年01月15日
${@datetime format="MM/DD/YYYY HH:mm"}                   → 01/15/2024 09:30
${@date timezone="America/Chicago"}                      → 2024-01-14(時差による)
${@datetime format="HH:mm" timezone="Asia/Tokyo"}        → 18:30

ファイル名での活用例:

請求書_${顧客名}_${@date format="YYYYMMDD"}

条件付きプレフィックス・サフィックス

${フィールドコード prefix="前置文字列"}
${フィールドコード suffix="後置文字列"}

フィールドに値がある場合のみ前後に文字を付加します。フィールドが空(null・空文字)の場合はタグ全体が空文字になります。住所など複数フィールドを区切り文字で結合するときに役立ちます。

使用例:

${住所}${市区町村 prefix="、"}${都道府県 prefix="、"}
住所市区町村都道府県出力結果
港区東京都日本港区、東京都、日本
港区(空)日本港区、日本
港区(空)(空)港区

prefix と suffix は組み合わせて使用できます。

${備考 prefix="【" suffix="】"}

備考フィールドに値があれば 【...】 で囲んで出力、空なら何も出力しません。

改行を差し込む

オプションの値の中では \n と書くと改行になります。タグは1行に収める必要があるため、 オプションの中に実際の改行を直接書くことはできません。

${氏名 suffix="\n"}${住所}
${タグ separator="\n"}
記法意味
\n改行
\tタブ
\\バックスラッシュ \ そのもの

prefix suffix のほか、配列フィールドの区切りを指定する separator でも使えます。

Excel(xlsx)での注意 セルに改行は書き込まれますが、Excel が実際に折り返して表示するのは、そのセルの書式で 「折り返して全体を表示する」が有効になっている場合のみです。テンプレート側でセルの 書式を設定してください。Word(docx)と PDF は設定不要でそのまま改行されます。


配列フィールドの出力

チェックボックス・複数選択・ユーザー選択などの配列フィールドは、デフォルトで , (カンマ+スペース)区切りで出力されます。各オプションで出力形式を詳細に制御できます。

separator — 区切り文字の指定

${フィールドコード separator="区切り文字"}
${チェックボックス}                      → 選択肢A, 選択肢B, 選択肢C
${チェックボックス separator=" / "}     → 選択肢A / 選択肢B / 選択肢C
${ユーザー選択 separator="・"}          → 山田太郎・鈴木花子
${複数選択 separator="\n"}              → 改行区切り

対象フィールド種別: チェックボックス・複数選択・ユーザー選択・組織選択・グループ選択

key — オブジェクト配列のプロパティ指定

ユーザー選択・組織選択・グループ選択フィールドは、内部的にオブジェクトの配列です。デフォルトでは name(表示名)を出力します。key オプションで取得するプロパティを変更できます。

${ユーザー選択 key="code"}              → ユーザーコード(ログインID)
${ユーザー選択 key="name"}              → 表示名(デフォルト)
${組織選択 key="code"}                  → 組織コード

主なプロパティ値:

フィールド種別key の値出力内容
ユーザー選択name(デフォルト)ユーザー表示名
ユーザー選択codeユーザーコード(ログインID)
組織選択name(デフォルト)組織名
組織選択code組織コード
グループ選択name(デフォルト)グループ名
グループ選択codeグループコード

separator と組み合わせることもできます。

${担当者 key="code" separator=","}     → user1,user2,user3

allOptions — チェックボックスの全選択肢表示

チェックボックス・複数選択フィールドの全選択肢を、選択状態(☑/☐)付きで出力します。アンケート結果の一覧表示などに便利です。

${フィールドコード allOptions}
${フィールドコード allOptions checked="☑" unchecked="☐" separator="\n"}

オプション詳細:

オプションデフォルト値説明
checked☑選択済み項目の先頭に付けるマーク
unchecked☐未選択項目の先頭に付けるマーク
separator\n(改行)選択肢同士の区切り文字

使用例(チェックボックスに「選択肢A・選択肢B・選択肢C」があり、AとCが選択済みの場合):

${チェックボックス allOptions}
→
☑ 選択肢A
☐ 選択肢B
☑ 選択肢C
${チェックボックス allOptions checked="✅" unchecked="⬜" separator=", "}
→ ✅ 選択肢A, ⬜ 選択肢B, ✅ 選択肢C

注意: allOptions はkintoneフォームのフィールド定義(選択肢の一覧)をAPIで取得します。フォームのアクセス権限が必要です。


画像差し込み

kintoneの添付ファイルフィールドに添付された画像をドキュメントに埋め込みます。

${フィールドコード image}
${フィールドコード image index="0" width="200" height="150"}

オプション詳細:

オプションデフォルト説明
index0複数ファイルが添付されている場合に取得するファイルのインデックス(0始まり)
width200挿入する画像の横幅(ピクセル)
height150挿入する画像の縦幅(ピクセル)

使用例:

${商品画像 image}                                 → 1枚目の画像を200×150pxで挿入
${商品画像 image index="1" width="300"}          → 2枚目の画像を300px幅で挿入
${社員写真 image width="100" height="120"}       → 幅100px・高さ120pxで挿入

フォーマット別の動作と注意事項:

形式動作注意点
PDF(HTML)<img> タグとしてインライン挿入対応画像形式: JPEG・PNG・GIF・WebP
DOCX<w:drawing> として段落に挿入タグが単一のテキストランに存在する必要あり。Wordの書式設定でタグが分割されると動作しない場合がある
XLSXセル位置にアンカーして挿入セルがinlineStr形式(直接入力)のみ対応。共有文字列形式のセルでは動作しない

ヒント: DOCXテンプレートで画像タグに太字・色などの書式を設定すると、Wordが内部でテキストランを分割する場合があります。画像タグには書式を設定しないことを推奨します。


QRコード・バーコード

フィールドの値からQRコードまたはバーコードを生成して、ドキュメントに挿入します。

QRコード

${フィールドコード qrcode}
${フィールドコード qrcode width="150"}
オプションデフォルト説明
width150QRコードの一辺のサイズ(ピクセル)。縦横同じサイズになります

バーコード

${フィールドコード barcode}
${フィールドコード barcode type="CODE128" width="200" height="80"}
オプションデフォルト説明
typeCODE128バーコードの形式(下表参照)
width200バーコードの横幅(ピクセル)
height80バーコードの縦幅(ピクセル)

対応バーコード形式:

type 値形式名用途・特徴
CODE128Code 128英数字・記号対応の汎用バーコード(デフォルト)
EAN13EAN-13商品バーコード(13桁数字)
EAN8EAN-8コンパクト商品バーコード(8桁数字)
UPCUPC-A北米向け商品バーコード(12桁数字)
CODE39Code 39英数字対応、医療・工業用途
ITF14ITF-14段ボール箱などの物流用バーコード
MSIMSI倉庫・棚管理用途
pharmacodePharmacode医薬品パッケージ用バーコード

使用例:

${商品コード barcode}                             → CODE128バーコード(200×80px)
${JANコード barcode type="EAN13" width="250"}   → EAN-13バーコード(250×80px)
${URL qrcode width="200"}                        → QRコード(200×200px)

注意: 値が空のフィールドにQRコード・バーコードタグを使用した場合、画像は挿入されません。バーコード形式によっては入力できる文字種・桁数に制限があります(例: EAN13 は13桁の数字のみ)。


条件分岐ブロック(IF/IFEXIST)

フィールドの値に応じてドキュメントの一部を表示・非表示にします。

構文

基本(値の有無で分岐):

${#if フィールドコード}
表示するコンテンツ
${/if}

比較演算子:

${#if フィールドコード = "値"}...${/if}
${#if フィールドコード != "値"}...${/if}
${#if フィールドコード > 100}...${/if}
${#if フィールドコード >= 100}...${/if}
${#if フィールドコード < 100}...${/if}
${#if フィールドコード <= 100}...${/if}

含む/含まない(チェックボックス・複数選択など):

${#if フィールドコード contains "値"}...${/if}
${#if フィールドコード !contains "値"}...${/if}

チェックボックス・複数選択・ユーザー選択などの複数の値を持つフィールドで、 指定した値が選ばれているかを判定します(= は全体の完全一致なので、複数選択時は一致しません)。

${#if 好み contains "りんご"}☑${#else}☐${/if} りんご

contains の前後には空白が必要です。文字列フィールドに使った場合は部分一致で判定します。

else ブロック:

${#if フィールドコード = "承認済み"}
承認済みです
${#else}
未承認です
${/if}

IFEXIST(値の存在確認):

${#ifexist フィールドコード}
フィールドが存在し空でない場合に表示
${/ifexist}

3分岐以上にしたい場合(else if)

${#elseif} はありません。${#else} の中に ${#if} を入れ子にして表現します。

${#if 金額 > 10000}高額
${#else}${#if 金額 > 0}通常
${#else}なし${/if}${/if}
金額出力
20000高額
5000通常
0なし

入れ子の数に制限はありません。${/if} は開いた ${#if} と同じ数だけ必要です。

注意: ${#elseif ...} と書いてしまうと、Word(docx)では 「テンプレートエラー」で帳票の生成自体が失敗します。必ず上記の入れ子で記述してください。

条件の動作

構文true になる条件
${#if FIELD}フィールドの値が空でなく、かつ "0" でない
${#ifexist FIELD}フィールドが存在し、値が空でない("0" でも true)
${#if FIELD = "値"}文字列として完全一致
${#if FIELD != "値"}文字列として不一致
${#if FIELD > 数値}数値として比較(大なり)
${#if FIELD >= 数値}数値として比較(以上)
${#if FIELD < 数値}数値として比較(小なり)
${#if FIELD <= 数値}数値として比較(以下)
${#if FIELD contains "値"}配列フィールドにその値が含まれる(文字列フィールドは部分一致)
${#if FIELD !contains "値"}上記の否定

フォーマット別の記述方法

DOCX(Wordテンプレート):

段落単位でブロックを記述します。${#if ...} と ${/if} は別の段落(改行)に置きます。条件が false の場合、そのブロック内の段落はすべて削除されます。

${#if ステータス = "承認済み"}
承認日: ${承認日 format="YYYY年MM月DD日"}
${#else}
(審査中)
${/if}

${#ifexist 備考}
備考: ${備考}
${/ifexist}

ブロックは入れ子にできます。${/if} は開いた ${#if} と同じ数だけ必要です。

${#if 注文区分 contains "最小ロット"}
最小ロットの場合の見出し
${#if 単位 contains "枚数"}
枚数の場合の説明
${/if}
${#if 単位 contains "フィート"}
フィートの場合の説明
${/if}
${/if}

表の表示・非表示:

  • 表ごと: 表の前の段落に ${#if ...}、表の後の段落に ${/if} を置くと、条件が false のとき表全体が削除されます。
  • 行ごと: 表の行の最初のセルに ${#if ...}、同じ行の最後のセルに ${/if} を置くと、条件が false のときその行が削除されます(サブテーブルのループと同じ置き方です)。
品目金額
基本料金${基本料金}
${#if オプション contains "保守"}保守料金${保守料金}${/if}
合計${合計}

表ごとの if の中に行ごとの if を置くこともできます。

注意: 行ごとの if では ${#else} は使えません(テンプレートエラーになります)。 開始と終了は必ず同じ行のセルに置いてください。

XLSX(Excelテンプレート):

行単位でブロックを制御します。${#if ...} と ${/if} を別の行のセルに記述します。条件が false の場合、そのブロック内の行ごと削除されます。

行A列
N${#if ステータス = "承認済み"}
N+1承認済みの処理内容
N+2${/if}

PDF(HTMLテンプレート):

HTMLコメントでブロックを囲みます。

<!-- ${#if ステータス = "承認済み"} -->
<p style="color:green">承認済み(承認日: ${承認日 format="YYYY/MM/DD"})</p>
<!-- ${#else} -->
<p style="color:gray">審査中</p>
<!-- ${/if} -->

<!-- ${#ifexist 備考} -->
<p><strong>備考:</strong> ${備考}</p>
<!-- ${/ifexist} -->

使用例:

${#if 合計金額 >= 10000}
10,000円以上のため送料無料です
${/if}

${#if 担当者 = "山田太郎"}
担当: 山田太郎(直通: 03-xxxx-xxxx)
${#else}
担当: ${担当者}
${/if}

注意: XLSX の行単位のブロック(${#if} と ${/if} を別の行に置く形式)と PDF(HTMLコメント形式)では、 条件ブロックの入れ子に対応していません。ブロックの中に別の ${#if} ブロックを入れることはできません。 DOCX、および XLSX の1つのセル内に書く ${#if} は入れ子にできます。


サブテーブルのループ展開

サブテーブルフィールドの各行データを繰り返し出力します。ループの記述方法は出力形式によって異なります。

DOCX(Wordテンプレート)

表の1行に開始タグ・フィールドタグ・終了タグをまとめて記述します。

| ${#明細} | ${商品名} | ${数量} | ${単価 currency="JPY"} | ${/明細} |
  • ${#サブテーブルコード} — ループ開始
  • ${/サブテーブルコード} — ループ終了
  • サブテーブルの行数分、行が繰り返されます

XLSX(Excelテンプレート)

マーカー行(開始・終了)とテンプレート行(データ行)を別行に分けて記述します。

行A列B列C列
N${#明細}
N+1${商品名}${数量}${単価 currency="JPY"}
N+2${/明細}

マーカー行のみの行は出力に含まれません。テンプレート行はサブテーブルの行数分複製されます。

PDF(HTMLテンプレート)

HTMLコメントでループ範囲を囲みます。

<!-- ${#明細} -->
<tr>
  <td>${商品名}</td>
  <td>${数量}</td>
  <td>${単価 currency="JPY"}</td>
</tr>
<!-- ${/明細} -->

関連レコードのループ展開

関連レコード一覧フィールド(REFERENCE_TABLE)の各レコードを繰り返し出力します。サブテーブルと同じ構文を使用します。

DOCX(Wordテンプレート)

サブテーブルと同じ構文で記述します。

| ${#関連案件} | ${案件名} | ${担当者} | ${/関連案件} |

関連レコード内にサブテーブルがある場合、ネストしたループも使用できます。

${#関連案件}
  ${案件名}
  | ${#明細} | ${商品名} | ${数量} | ${/明細} |
${/関連案件}

XLSX(Excelテンプレート)

サブテーブルと同じマーカー行・テンプレート行の形式で記述します。

行A列B列C列
N${#関連案件}
N+1${案件名}${担当者}${金額 currency="JPY"}
N+2${/関連案件}

注意: xlsx では関連レコード内のサブテーブルフィールドは空欄になります(ネストループ非対応)。

PDF(HTMLテンプレート)

HTMLコメントで囲みます。関連レコード内のサブテーブルループをネストして記述できます。

<!-- ${#関連案件} -->
<tr>
  <td>${案件名}</td>
  <td>${担当者}</td>
</tr>
<!-- ${#明細} -->
<tr>
  <td colspan="2" style="padding-left:2em">${商品名}(${数量}個)</td>
</tr>
<!-- ${/明細} -->
<!-- ${/関連案件} -->

ドキュメントの生成

ボタンで生成する場合

  1. レコード詳細画面を開く
  2. 設定したボタン(例: 「請求書を作成」)をクリック
  3. 生成処理が実行されます(数秒〜数十秒かかる場合があります)
  4. 完了後、指定した添付フィールドにファイルが保存されます

ステータス変更で生成する場合

  1. レコード詳細画面でプロセス管理のステータスを変更
  2. 対象ステータスへの変更時に自動でドキュメント生成が実行されます
  3. 自動実行がOFFの場合: 確認ダイアログが表示されます。「OK」で生成、「キャンセル」でスキップします
  4. 完了後、指定した添付フィールドにファイルが保存されます

一覧画面から一括生成する場合

ドキュメント設定の「ボタン表示」トリガーで「一覧画面で一括出力を有効にする」をONにすると、レコード一覧画面に一括出力ボタンが表示されます。

手順:

  1. レコード一覧画面で絞り込み条件を設定する(任意)
  2. 一括出力ボタンをクリック
  3. 対象件数が確認ダイアログに表示されます。「OK」で処理を開始します
  4. 処理中は進捗(一括生成中: X / Y 件)がオーバーレイ表示されます
  5. 完了後に成功・失敗件数のトースト通知が表示されます

注意事項:

  • 絞り込みを適用していない場合はアプリの全レコードが対象になります
  • 一度に処理できる最大件数は 10,000件 です(kintone REST API の制限)
  • 処理中はページを離れないでください
  • 一部のレコードで生成に失敗した場合も、他のレコードの処理は継続されます

ラベル印刷

これまでの「1レコード→1帳票」の生成モデルとは別の仕組みです。多数のレコード(例: 図書90冊分)を、 1枚に複数個のラベル枠を持つDOCX/XLSXシートへまとめて出力し、複数シート分は1つのZIPファイルとしてダウンロードします。

概要:

  • 対象は一覧画面の絞り込み条件に一致する全レコード
  • レコードを「1シートあたりの件数」ごとにグルーピングし、シートごとに1つのファイルを生成
  • 生成した全シートは1つのZIPにまとめてブラウザから直接ダウンロードされます(kintoneレコードへの保存は行いません)
  • 出力形式は「テンプレートと同じ形式(DOCX/XLSX)」または「PDF」から選択できます

ラベル印刷設定の追加

設定画面下部の 「+ ラベル印刷設定を追加」 ボタンから設定を追加します。通常のドキュメント設定とは別の一覧で管理されます。

項目説明
ドキュメント名設定の識別名。一覧画面に表示されるボタンのラベルとしてそのまま使用されます
テンプレート形式DOCX または XLSX
テンプレートソース別アプリの添付ファイル。アプリID・レコードID・フィールドコード・ファイル名を指定。上記のテンプレート形式に一致するファイルを指定します
出力形式テンプレートと同じ形式 / PDF。PDFを選択した場合、DOCX・XLSXからPDFへの変換と同じバックエンド変換サービスを使用します(有効なライセンスが必要)
1シートあたりの件数テンプレートのラベル枠数と一致させます(例: 30)
印刷実行時にスキップ枠数を確認する有効にすると、印刷ボタンを押すたびにダイアログでスキップする枠数を確認します(使いかけのシール用紙に続きから印刷したい場合に使用)。無効の場合はこのダイアログは表示されません
デフォルトのスキップ枠数上記が有効な場合の、確認ダイアログの初期値。1シートあたりの件数未満を指定してください
ファイル名テンプレートZIP内の各シートファイルの名前。${index}(シート番号)・${total}(総シート数)が使用可能(例: label_${index})。拡張子は出力形式に応じて自動付与されます

テンプレートの準備(ラベル印刷)

各ラベル枠のタグは、通常のフィールドコードの前に枠番号を付けた形式で記述します。タグ書式・枠番号の付け方はDOCX/XLSXどちらのテンプレートでも共通です。

${1_book_id}
${1_book_title}
${1_book_id barcode type="CODE128" height="25"}

${2_book_id}
${2_book_title}
${2_book_id barcode type="CODE128" height="25"}

...(テンプレートの枠数分繰り返す)...

${30_book_id}
${30_book_title}
${30_book_id barcode type="CODE128" height="25"}

なぜ番号を前置するのか: kintoneのフィールドコードは数字から始めることができません。そのため N_フィールドコード という形式は実在のフィールドコードと構造的に衝突しません。(book_id_1 のように番号を後置する形式だと、偶然同名の実フィールドが存在した場合に紛らわしくなる可能性があります。)

日付フォーマット・通貨フォーマット・バーコード・QRコードなど、テンプレートタグ仕様で説明している通常のタグオプションは、各枠のタグにそのまま使用できます(例: ${1_created_at format="YYYY/MM/DD"})。

一覧画面からの生成(ラベル印刷)

  1. レコード一覧画面で絞り込み条件を設定する
  2. 設定したラベル印刷ボタン(ドキュメント名がそのままボタンラベルになります)をクリック
  3. 「印刷実行時にスキップ枠数を確認する」が有効な設定の場合、スキップする枠数を入力するダイアログが表示されます(デフォルト値は設定画面の値。無効な設定ではこのダイアログは表示されません)
  4. 確認ダイアログに対象レコード件数と生成されるシート数が表示されるので「OK」で実行
  5. 進捗がオーバーレイ表示されます
  6. 完了後、全シートを含むZIPファイルが自動的にダウンロードされます

注意事項:

  • 最後のシートで対象レコード数が「1シートあたりの件数」に満たない場合、余ったラベル枠は空欄になります
  • スキップ枠数を指定した場合、空欄になるのは1枚目のシートの先頭のみです。2枚目以降は通常どおり1枠目から詰められます
  • 生成したファイルはkintoneのレコードには保存されません(ダウンロードのみ)
  • 対象は一覧画面の絞り込み条件に一致する全レコードです。一括出力と同様、kintone REST APIの制限により一度に処理できる最大件数は 10,000件 です
  • 出力形式でPDFを選択した場合はバックエンドの変換サービスを使用するため、有効なライセンスが必要です

注意事項・制限

設定サイズ制限

kintoneプラグインの設定データは 256KB が上限です。PDFのHTMLテンプレートが大きい場合は、設定画面上部のサイズメーターで確認してください。超過した場合は保存できません。

PDF日本語フォント

html2pdf.jsはブラウザのフォントをそのまま使用します。通常の日本語表示には問題ありませんが、印刷環境によっては埋め込みフォントが必要になる場合があります。

表示言語

設定画面はログインユーザーの言語設定(kintone.getLoginUser().language)に従って自動的に日本語または英語で表示されます。

ファイルサイズ

大きなDOCX/XLSXテンプレートや、多数のサブテーブル行があるデータの場合、生成処理に時間がかかることがあります。ブラウザのタイムアウト前に完了するよう、テンプレートはなるべくシンプルに保つことを推奨します。


トラブルシューティング

ドキュメントが生成されない

確認事項:

  • プラグイン設定が保存されているか(設定画面で「保存」を押したか)
  • テンプレート保管アプリのアプリID・レコードID・フィールドコード・ファイル名が正しいか
  • 出力先の添付フィールドのフィールドコードが正しいか
  • 別アプリ出力の場合、クエリの構文が正しいか(クエリが空またはマッチしない場合は新規レコードが作成されます)

フィールドの値が出力されない(タグが残る)

確認事項:

  • フィールドコードが正確に一致しているか(大文字・小文字・スペースに注意)
  • フィールドコードはkintoneのフォーム設定で確認できます

DOCX / XLSX でタグが変換されずそのまま出力される

確認事項:

  • $ と { の間にスペースが入っていないか($ {フィールドコード} は無効)
  • Word/Excelの自動修正が ${ を変換していないか($ と { を別々に入力してみる)
  • タグ内のフィールドコードに全角スペースが混入していないか

Excelテンプレートで出力が空白になる

確認事項:

  • ループのマーカー行(${#〜} / ${/〜})が正しく対応しているか
  • マーカーに使用したフィールドコードが実際のサブテーブルフィールドのコードと一致しているか

PDFのレイアウトが崩れる

確認事項:

  • ページサイズと向き(縦/横)の設定が適切か
  • HTMLテンプレート内のCSSで page-break-* プロパティを使って改ページ位置を制御できます
  • 複雑なCSSレイアウト(flexbox、gridなど)はPDF変換時に再現されない場合があります。テーブルレイアウトの使用を推奨します

日付が正しいフォーマットで出力されない

確認事項:

  • format オプションの書式文字列が正しいか(Day.js フォーマット文字列を参照)
  • フィールドの値が有効な日付形式か(kintoneの日付フィールド以外の文字列フィールドに日付を入力している場合、ISO形式 YYYY-MM-DD でないとフォーマットできません)