Umitake ドキュメントジェネレーター for kintone ユーザーマニュアル
目次
概要
ドキュメントジェネレーター プラグインは、kintoneのレコードデータをもとに Word(DOCX)・Excel(XLSX)・PDF ドキュメントを自動生成するプラグインです。
主な機能:
- レコードのフィールド値をテンプレートに差し込んで出力
- サブテーブルフィールドのループ展開
- 関連レコード一覧フィールドのループ展開(DOCX / PDF はネストループも対応)
- 日付・通貨・数値の書式指定
- 出力ファイルを同一アプリまたは別アプリの添付フィールドに保存
- ボタンクリックまたはステータス変更による出力トリガー
- レコード一覧画面からの一括出力(絞り込み条件に一致するすべてのレコードを処理)
インストール
- kintone管理画面(歯車アイコン)を開く
- プラグイン をクリック
- プラグインの読み込み をクリック
kintone-doc-generator.zipを選択してアップロード- アップロード完了後、対象アプリの設定画面を開く
- プラグイン タブから「ドキュメントジェネレーター」を追加
- 設定 をクリックしてプラグイン設定画面を開く
プラグイン設定
対象アプリの設定画面で「ドキュメントジェネレーター」の 設定 をクリックすると、プラグイン設定画面が開きます。
画面上部に設定サイズメーターが表示されます。kintoneプラグインの設定は256KBが上限です。PDFのHTMLテンプレートが大きい場合はサイズに注意してください。
ドキュメント設定の追加
「+ ドキュメント設定を追加」 ボタンをクリックして、出力設定を1件追加します。1つのアプリに複数の設定を登録できます(例: 「請求書」「納品書」「注文確認書」を同一アプリに設定)。
各設定カードのヘッダー右側には以下のボタンが表示されます。
| ボタン | 動作 |
|---|---|
| ⧉ | 設定を複製(直下に同内容のコピーを作成) |
| ↑ / ↓ | 設定の順序を変更 |
| × | 設定を削除 |
テンプレートソース
出力形式に応じてテンプレートの指定方法が異なります。
DOCX / XLSX の場合
テンプレートファイルは別のkintoneアプリ(テンプレート保管アプリ)に添付ファイルとして登録します。
テンプレート保管アプリの準備手順:
- 新規kintoneアプリを作成(例: 「テンプレート管理」)
- 添付ファイルフィールドを追加(フィールドコード例:
template_file) - テンプレートファイル(.docx または .xlsx)をレコードに添付して保存
- レコードのURLからレコード番号を確認
プラグイン設定での指定例(請求書テンプレートの場合):
| 項目 | 入力値 |
|---|---|
| アプリID | 100(テンプレート管理アプリのID) |
| レコードID | 1(テンプレートが添付されているレコード番号) |
| フィールドコード | template_file |
| ファイル名 | invoice_template.docx |
PDF の場合
PDFのテンプレートソースは3種類から選択できます。
| 方式 | 説明 |
|---|---|
| HTMLから作成 | 設定画面のHTMLエディタに直接HTMLを記述 |
| DOCXから作成 | DOCXテンプレートをもとに生成し、バックエンドサービスでPDFに変換 |
| XLSXから作成 | XLSXテンプレートをもとに生成し、バックエンドサービスでPDFに変換 |
HTMLから作成の場合:
設定画面内のHTMLエディタに直接HTMLを記述します。フィールド一覧からタグを挿入するボタンも利用できます。エディタ右上の「全画面で編集」ボタンで全画面モーダルに拡大できます。
ページ設定:
| 項目 | 選択肢 |
|---|---|
| ページサイズ | A4 / A3 / Letter |
| 向き | 縦(portrait)/ 横(landscape) |
注意: DOCX/XLSXからのPDF変換は、バックエンドの変換サービスを使用します。有効なライセンスが必要です。
出力先
生成したファイルの保存先を指定します。
同一アプリ(添付フィールド)
| 項目 | 説明 |
|---|---|
| フィールドコード | 保存先の添付ファイルフィールドコード |
| 追記モード | ON: 既存ファイルを残して追加 / OFF: 上書き |
設定例: フィールドコード generated_docs、追記モード ON
別アプリ
| 項目 | 説明 | 例 |
|---|---|---|
| アプリID | 出力先アプリのID | — |
| 添付ファイルフィールドコード | 出力先の添付ファイルフィールド | — |
| レコード特定クエリ | 保存先レコードを絞り込むkintoneクエリ(タグ使用可) | customer_code = "${顧客コード}" |
| アプリIDを格納するフィールド | 新規作成時に出力元アプリIDを書き込むフィールド(任意) | — |
| レコードIDを格納するフィールド | 新規作成時に出力元レコードIDを書き込むフィールド(任意) | — |
| 追記モード | ON: 既存ファイルを残して追加 / OFF: 上書き | — |
クエリにはフィールドタグ(${フィールドコード})を使用できます。クエリが空またはマッチしない場合は、出力先アプリに新規レコードを作成してファイルを保存します。
ファイル名テンプレート
生成するファイルのファイル名を指定します。フィールドタグや生成日時タグを使って動的なファイル名にできます。
請求書_${顧客名}_${作成日 format="YYYYMMDD"}
報告書_${@date format="YYYYMMDD"}
拡張子(.docx、.xlsx、.pdf)は指定不要です。プラグインが自動で付与します。
ヒント: ファイル名に使えないOS特殊文字(
/、\、:、*、?、"、<、>、|)はアンダースコアに自動変換されます。
出力トリガー
ドキュメント生成のきっかけを指定します。
ボタン
レコード詳細画面にボタンを表示します。
| 項目 | 説明 |
|---|---|
| ボタンラベル | レコード詳細画面のボタンに表示するテキスト(例: 請求書を作成) |
| 表示位置 | ヘッダーメニュー / 画面下部 |
| 一覧画面で一括出力を有効にする | 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テンプレート
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>
ヒント: 複雑なCSSレイアウト(flexbox、gridなど)はPDF変換時に再現されない場合があります。テーブルレイアウトの使用を推奨します。
DOCXから作成 / XLSXから作成
DOCXまたはXLSXのテンプレートをそれぞれのテンプレート形式で作成し、テンプレート保管アプリに添付します。生成されたDOCX/XLSXはバックエンドの変換サービスでPDFに変換されます。
テンプレートタグ仕様
オプション一覧
タグには オプション名="値" の形式でオプションを付加できます。フラグ型オプション(image・qrcode・barcode・allOptions)は値なしで記述します。
${フィールドコード オプション名="値" 別オプション="値"}
${フィールドコード image}
${フィールドコード allOptions checked="☑" unchecked="☐"}
全オプション一覧:
| オプション | 値 | デフォルト | 主な対象フィールド | 説明 |
|---|---|---|---|---|
format | Day.js書式文字列 | — | 日付・日時・@date・@datetime | 日付・日時の出力書式を指定(例: "YYYY年MM月DD日") |
timezone | タイムゾーン名 | ブラウザのTZ | 日付・日時・@date・@datetime | 出力タイムゾーン(例: "Asia/Tokyo") |
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 | ピクセル数 | 200 | image・qrcode・barcode | 挿入する画像の横幅(px) |
height | ピクセル数 | 150 | image・barcode | 挿入する画像の縦幅(px) |
qrcode | (フラグ) | — | 任意フィールド | フィールド値からQRコードを生成して挿入 |
barcode | (フラグ) | — | 任意フィールド | フィールド値からバーコードを生成して挿入 |
type | バーコード形式 | "CODE128" | barcode 使用時 | バーコードの形式 |
基本タグ
${フィールドコード}
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="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
${@datetime format="HH:mm" timezone="Asia/Tokyo"} → 18:30
ファイル名での活用例:
請求書_${顧客名}_${@date format="YYYYMMDD"}
条件付きプレフィックス・サフィックス
${フィールドコード prefix="前置文字列"}
${フィールドコード suffix="後置文字列"}
フィールドに値がある場合のみ前後に文字を付加します。フィールドが空の場合はタグ全体が空文字になります。
使用例(住所の結合):
${住所}${市区町村 prefix="、"}${都道府県 prefix="、"}
| 住所 | 市区町村 | 都道府県 | 出力結果 |
|---|---|---|---|
| 港区 | 東京都 | 日本 | 港区、東京都、日本 |
| 港区 | (空) | 日本 | 港区、日本 |
| 港区 | (空) | (空) | 港区 |
${備考 prefix="【" suffix="】"}
備考フィールドに値があれば 【...】 で囲んで出力、空なら何も出力しません。
配列フィールドの出力
チェックボックス・複数選択・ユーザー選択などの配列フィールドは、デフォルトで , 区切りで出力されます。
separator — 区切り文字の指定
${チェックボックス separator=" / "} → 選択肢A / 選択肢B / 選択肢C
${ユーザー選択 separator="・"} → 山田太郎・鈴木花子
${複数選択 separator="\n"} → 改行区切り
key — オブジェクト配列のプロパティ指定
ユーザー選択・組織選択・グループ選択フィールドで取得するプロパティを指定します。
| フィールド種別 | key の値 | 出力内容 |
|---|---|---|
| ユーザー選択 | name(デフォルト) | ユーザー表示名 |
| ユーザー選択 | code | ユーザーコード(ログインID) |
| 組織選択 | name(デフォルト) | 組織名 |
| 組織選択 | code | 組織コード |
${担当者 key="code" separator=","} → user1,user2,user3
allOptions — チェックボックスの全選択肢表示
チェックボックス・複数選択フィールドの全選択肢を、選択状態(☑/☐)付きで出力します。
${チェックボックス allOptions}
→
☑ 選択肢A
☐ 選択肢B
☑ 選択肢C
${チェックボックス allOptions checked="✅" unchecked="⬜" separator=", "}
→ ✅ 選択肢A, ⬜ 選択肢B, ✅ 選択肢C
画像差し込み
kintoneの添付ファイルフィールドに添付された画像をドキュメントに埋め込みます。
${フィールドコード image}
${フィールドコード image index="1" width="300" height="200"}
| オプション | デフォルト | 説明 |
|---|---|---|
index | 0 | 複数ファイルが添付されている場合のインデックス(0始まり) |
width | 200 | 画像の横幅(ピクセル) |
height | 150 | 画像の縦幅(ピクセル) |
フォーマット別の注意事項:
| 形式 | 注意点 |
|---|---|
| PDF(HTML) | 対応画像形式: JPEG・PNG・GIF・WebP |
| DOCX | タグが単一のテキストランに存在する必要あり。画像タグには書式(太字・色など)を設定しないことを推奨 |
| XLSX | セルがinlineStr形式(直接入力)のみ対応 |
QRコード・バーコード
フィールドの値からQRコードまたはバーコードを生成して、ドキュメントに挿入します。
QRコード
${フィールドコード qrcode}
${URL qrcode width="200"}
バーコード
${商品コード barcode}
${JANコード barcode type="EAN13" width="250"}
対応バーコード形式:
type 値 | 形式名 | 用途・特徴 |
|---|---|---|
CODE128 | Code 128 | 英数字・記号対応の汎用バーコード(デフォルト) |
EAN13 | EAN-13 | 商品バーコード(13桁数字) |
EAN8 | EAN-8 | コンパクト商品バーコード(8桁数字) |
UPC | UPC-A | 北米向け商品バーコード(12桁数字) |
CODE39 | Code 39 | 英数字対応、医療・工業用途 |
ITF14 | ITF-14 | 物流用バーコード |
条件分岐ブロック(IF/IFEXIST)
フィールドの値に応じてドキュメントの一部を表示・非表示にします。
構文
${#if フィールドコード}
表示するコンテンツ
${/if}
${#if フィールドコード = "値"}...${/if}
${#if フィールドコード != "値"}...${/if}
${#if フィールドコード > 100}...${/if}
${#if フィールドコード = "承認済み"}
承認済みです
${#else}
未承認です
${/if}
${#ifexist フィールドコード}
フィールドが存在し空でない場合に表示
${/ifexist}
条件の動作
| 構文 | true になる条件 |
|---|---|
${#if FIELD} | フィールドの値が空でなく、かつ "0" でない |
${#ifexist FIELD} | フィールドが存在し、値が空でない("0" でも true) |
${#if FIELD = "値"} | 文字列として完全一致 |
${#if FIELD > 数値} | 数値として比較 |
フォーマット別の記述方法
DOCX: 段落単位でブロックを記述します。${#if ...} と ${/if} は別の段落に置きます。
XLSX: 行単位でブロックを制御します。${#if ...} と ${/if} を別の行のセルに記述します。
PDF(HTML): HTMLコメントでブロックを囲みます。
<!-- ${#if ステータス = "承認済み"} -->
<p style="color:green">承認済み</p>
<!-- ${#else} -->
<p style="color:gray">審査中</p>
<!-- ${/if} -->
<!-- ${#ifexist 備考} -->
<p><strong>備考:</strong> ${備考}</p>
<!-- ${/ifexist} -->
注意: 条件ブロックのネストには対応していません。
サブテーブルのループ展開
DOCX
表の1行に開始タグ・フィールドタグ・終了タグをまとめて記述します。
| ${#明細} | ${商品名} | ${数量} | ${単価 currency="JPY"} | ${/明細} |
XLSX
マーカー行(開始・終了)とテンプレート行(データ行)を別行に分けて記述します。
| 行 | A列 | B列 | C列 |
|---|---|---|---|
| N | ${#明細} | ||
| N+1 | ${商品名} | ${数量} | ${単価 currency="JPY"} |
| N+2 | ${/明細} |
PDF(HTML)
HTMLコメントでループ範囲を囲みます。
<!-- ${#明細} -->
<tr>
<td>${商品名}</td>
<td>${数量}</td>
<td>${単価 currency="JPY"}</td>
</tr>
<!-- ${/明細} -->
関連レコードのループ展開
関連レコード一覧フィールドの各レコードを繰り返し出力します。サブテーブルと同じ構文を使用します。
DOCXでのネストループ
関連レコード内にサブテーブルがある場合、ネストしたループも使用できます。
${#関連案件}
${案件名}
| ${#明細} | ${商品名} | ${数量} | ${/明細} |
${/関連案件}
PDF(HTML)でのネストループ
<!-- ${#関連案件} -->
<tr><td>${案件名}</td><td>${担当者}</td></tr>
<!-- ${#明細} -->
<tr><td colspan="2" style="padding-left:2em">${商品名}(${数量}個)</td></tr>
<!-- ${/明細} -->
<!-- ${/関連案件} -->
注意: XLSXでは関連レコード内のサブテーブルループ(ネストループ)には対応していません。
ドキュメントの生成
ボタンで生成する場合
- レコード詳細画面を開く
- 設定したボタン(例: 「請求書を作成」)をクリック
- 生成処理が実行されます(数秒〜数十秒かかる場合があります)
- 完了後、指定した添付フィールドにファイルが保存されます
ステータス変更で生成する場合
- レコード詳細画面でプロセス管理のステータスを変更
- 対象ステータスへの変更時に自動でドキュメント生成が実行されます
- 自動実行がOFFの場合: 確認ダイアログが表示されます。「OK」で生成、「キャンセル」でスキップします
一覧画面から一括生成する場合
「一覧画面で一括出力を有効にする」をONにすると、レコード一覧画面に一括出力ボタンが表示されます。
手順:
- レコード一覧画面で絞り込み条件を設定する(任意)
- 一括出力ボタンをクリック
- 対象件数が確認ダイアログに表示されます。「OK」で処理を開始します
- 処理中は進捗(
一括生成中: X / Y 件)がオーバーレイ表示されます - 完了後に成功・失敗件数のトースト通知が表示されます
注意事項:
- 絞り込みを適用していない場合はアプリの全レコードが対象になります
- 一度に処理できる最大件数は 10,000件 です
- 処理中はページを離れないでください
注意事項・制限
設定サイズ制限
kintoneプラグインの設定データは 256KB が上限です。PDFのHTMLテンプレートが大きい場合は、設定画面上部のサイズメーターで確認してください。
PDF日本語フォント
html2pdf.jsはブラウザのフォントをそのまま使用します。印刷環境によっては埋め込みフォントが必要になる場合があります。
表示言語
設定画面はログインユーザーの言語設定に従って自動的に日本語または英語で表示されます。
トラブルシューティング
ドキュメントが生成されない
確認事項:
- プラグイン設定が保存されているか(設定画面で「保存」を押したか)
- テンプレート保管アプリのアプリ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でないとフォーマットできません)
