最終更新日: 2026年7月13日
FormToPDF は Google Workspace™ 上で動作するアドオンです。
以下の流れで、スプレッドシートのデータをもとにした PDF を一括生成できます。
スプレッドシートにデータを蓄積するため、あらかじめ Google フォーム™を作成し、回答をスプレッドシートに保存する設定にしてください。Google フォーム™の「回答」タブから、回答保存先のスプレッドシートを指定できます。
フォームで画像ファイルの添付を許可している場合、アップロードされた画像ファイルのアクセス権設定が重要です。
最も簡単な方法は、フォームの回答保存先フォルダ(フォームの回答に添付された画像が保存されるフォルダ)に対して「リンクを知っている全員」を設定することです。これにより、FormToPDF が画像をテンプレートに埋め込めるようになります。
Google Workspace™ Marketplace から FormToPDF アドオンをインストールしてください。
詳しい起動方法は インストール後の使い方 をご参照ください。
サイドバーでは以下の操作が行えます。
「開始行」と「終了行」で、PDF を生成する行の範囲を指定できます。
サイドバーには以下の情報がリアルタイムで表示されます。
テンプレートドキュメント内に {{列名}} 形式のプレースホルダー(差し込み項目)を記述することで、スプレッドシートの各行のデータに置換できます。
スプレッドシートの1行目(ヘッダー行)に定義された列名を使ってプレースホルダーを指定します。
例:スプレッドシートのヘッダー行に「氏名」「郵便番号」「住所」「備考」の列がある場合
拝啓
{{氏名}} 様
ご住所:{{住所}}
郵便番号:{{郵便番号}}
{{備考}}
敬具
{{A}} 〜 {{ZZ}}(1〜2文字の大文字アルファベット)で列を指定することもできます。
{{A}} 様
ご住所:{{C}}
郵便番号:{{B}}
列名がたまたま A 〜 ZZ の1〜2文字の大文字アルファベットと重複する場合、列アルファベットとして解釈されます。
A という列名がある場合、{{A}} は列アルファベットの「A列」として解決されます| パラメータ | 説明 | 例 |
|---|---|---|
| (なし) | セルの値をそのまま挿入 | {{氏名}} |
:text |
表示形式を適用した値を挿入(日付の書式など) | {{日付:text}} |
:image[N] |
N番目の画像を挿入(0始まり) | {{写真:image[0]}} |
:image[N]:width:xx% |
N番目の画像をページ幅xx%で挿入 | {{写真:image[1]:width:50%}} |
:qrcode |
セルの値をQRコード画像に変換 | {{URL:qrcode}} |
:qrcode:size:xx |
サイズ指定でQRコード画像を生成 | {{URL:qrcode:size:80}} |
:map:image |
住所を地図画像に変換(デフォルト設定) | {{住所:map:image}} |
:map:image:params |
任意パラメータで地図画像を取得 | {{住所:map:image:zoom=13&size=400x300}} |
:map:qrcode |
住所をGoogle Maps検索URLのQRコードに変換 | {{住所:map:qrcode}} |
:map:qrcode:size:xx |
サイズ指定で地図QRコードを生成 | {{住所:map:qrcode:size:80}} |
:currency |
数値を3桁カンマ区切り+「円」でフォーマット | {{金額:currency}} |
:currency:symbol:xx |
指定記号を前置して3桁カンマ区切りでフォーマット | {{金額:currency:symbol:¥}} |
:wareki |
日付値を和暦(元号年)形式に変換 | {{日付:wareki}} |
:text:wareki |
表示値(文字列)をパースして和暦形式に変換 | {{日付:text:wareki}} |
画像を挿入するには {{列名:image[N]}} 形式を使用します。
{{写真:image[0]}}
[N]: セル内の複数画像から何番目を取得するか(0始まり)https://drive.google.com/open?id=1lE9Q14zEC9B1eeQruinuG4kBEWIZID4Y画像の幅をページ幅に対するパーセンテージで指定するには :width:xx% パラメータを追加します。
{{写真:image[0]:width:50%}}
:width を省略した場合は、従来通り横幅300ピクセルで表示されます{{A:image[0]:width:75%}}セルの値をQRコード画像に変換して挿入するには {{列名:qrcode}} 形式を使用します。
{{URL:qrcode}}
{{URL:qrcode:size:80}}
{{A:qrcode:size:80}}セルの値をGoogle Maps検索URLに変換し、そのURLのQRコード画像として挿入するには {{列名:map:qrcode}} 形式を使用します。
{{住所:map:qrcode}}
{{住所:map:qrcode:size:80}}
{{A:map:qrcode:size:80}}| 表示 | ケース |
|---|---|
No address data |
住所セルが空の場合 |
QR API error: {code} |
QRコードAPI呼び出しが200以外のステータスを返した場合 |
セルの値をGoogle Maps Static APIで地図画像に変換して挿入するには {{列名:map:image}} 形式を使用します。
{{住所:map:image}}
{{住所:map:image:zoom=13&size=400x300}}
zoom=N: ズームレベルを指定(デフォルト: 15)size=WxH: 画像サイズを指定(デフォルト: 600x400){{A:map:image:zoom=16}}| 表示 | ケース |
|---|---|
No address data |
住所セルが空の場合 |
Maps API key not configured |
Google Maps Static API の API キーが設定されていない |
Maps API error: {code} |
API呼び出しが200以外のステータスを返した場合 |
セルの値をスプレッドシート上での表示形式(日付の書式、数値の書式など)を適用した状態で埋め込むには :text パラメータを使用します。
{{日付:text}}
{{日付}} では内部値が出力されますが、{{日付:text}} では「2024/1/1」と表示形式通りの値が出力されます{{A:text}}セルの数値を3桁カンマ区切り+通貨記号でフォーマットして出力するには {{列名:currency}} 形式を使用します。
{{金額:currency}}
| プレースホルダー | 入力値 | 出力 |
|---|---|---|
{{金額:currency}} |
1000 | 1,000円 |
{{金額:currency}} |
1000000 | 1,000,000円 |
{{金額:currency}} |
0 | 0円 |
{{金額:currency}} |
99.5 | 99.5円 |
{{金額:currency}} |
-500 | -500円 |
{{A:currency}}記号を「¥」などに変更するには :symbol:xx サブパラメータを使用します。
{{金額:currency:symbol:¥}}
| プレースホルダー | 入力値 | 出力 |
|---|---|---|
{{金額:currency:symbol:¥}} |
1000 | ¥1,000 |
:symbol で指定した記号は数値の前に付与されます{{A:currency:symbol:¥}}セルの日付値を和暦(元号年)形式に変換して出力するには {{列名:wareki}} 形式を使用します。
{{日付:wareki}}
対応元号: 明治(1868/1/25〜)、大正、昭和、平成、令和
1868/1/24 より前の日付はエラーとなります。
列アルファベット形式でも使用可能: {{A:wareki}}
セルの表示値(文字列)をパースして和暦変換するには {{列名:text:wareki}} 形式を使用します。
{{日付:text:wareki}}
{{A:text:wareki}}バッチ生成を実行すると、スプレッドシートに _FormToPDF_Status 列が追加され、各行の処理状態が記録されます。
バッチ生成を実行すると、ステータス列のすぐ左に _FormToPDF_Skip 列が自動追加されます。この列に true(大文字小文字不問)と入力すると、バッチ処理時にその行のPDF生成がスキップされます。
true: その行はスキップされ、_FormToPDF_Status は変更されません_FormToPDF_Skip 列が存在する場合は再利用されます(既存の値は維持されます)バッチ生成を実行すると、ステータス列のすぐ右に 「PDF」列 が自動追加されます。各行のPDF生成が成功すると、その行のPDF列に生成されたPDFファイルのGoogle Drive™リンクが書き込まれます。リンクをクリックするとブラウザで直接PDFを開くことができます。
バッチ生成を実行すると、PDF列のすぐ右に「ドキュメント」列が自動追加されます。各行のPDF生成が成功すると、その行のドキュメント列に生成途中のGoogleドキュメントのリンクが書き込まれます。リンクをクリックするとブラウザで直接ドキュメントを開くことができます。
| エラーケース | エラーメッセージ |
|---|---|
空のプレースホルダー {{}} |
「空のプレースホルダー「{{}}」は無効です。」 |
存在しない列名 {{存在しない列}} |
「列名「存在しない列」はヘッダー行に存在しません。」 |
列アルファベット範囲外 {{ZZZ}} |
列名として解決(ヘッダーに存在しなければ上記エラー) |
| データ範囲外の列アルファベット | 「列アルファベット「X」(インデックス: 23)はデータ範囲外です(列数: 10)。」 |
FormToPDF はサブスクリプション方式でご利用いただけます。Stripe を通じて決済が行われます。
| 月額プラン | 年額プラン(お得) | |
|---|---|---|
| 料金 | 300円/月 | 3,000円/年 |
| 支払い | 月払い | 年払い(月換算250円) |
初回はトライアルとして一定回数まで無料でお試しいただけます。トライアル期間・回数を超えた場合は、サブスクリプションにご登録いただくことで継続利用が可能です。
Google Workspace™ Marketplace のマイアプリページから、FormToPDF の設定を開き、「サブスクリプションを管理」より解約手続きを行ってください。解約後は次回更新が行われず、既存の機能は契約期間中引き続きご利用いただけます。
画像がテンプレート内で表示されない場合、最も多い原因はアクセス権設定です。Google Drive™ 上の画像ファイルが「リンクを知っている全員」に設定されているかご確認ください。
フォームで画像が保存されるフォルダ全体に対して「リンクを知っている全員」の閲覧者設定を行うと、個別ファイルに設定する手間が省けます。
プレースホルダーに指定した列名が、スプレッドシートの1行目(ヘッダー行)に存在しない場合に表示されます。以下をご確認ください。
以下の点をご確認ください。
:qrcode または :map:qrcode の記述が正しいか以下の点をご確認ください。
以下の点をご確認ください。
トライアルの利用上限に達したか、サブスクリプションの有効期限が切れている可能性があります。サブスクリプションをご契約いただくと、再度ご利用いただけます。
Google フォーム™の回答保存先フォルダ(フォームの「回答」タブで設定したスプレッドシートが保存されているフォルダ)に対して、「リンクを知っている全員」を閲覧者に設定するのが最も簡単な方法です。フォルダ単位で設定すれば、以降にアップロードされるすべての画像に自動的に適用されます。
詳細は サポートページ もご参照ください。
テンプレートのGoogleドキュメント内で @メールの下書き と入力すると、Smart Chip(スマートチップ)として「メールの下書き」が挿入されます。このSmart Chipに以下のフィールドを設定することで、生成したドキュメントからワンクリックでGmailの送信画面を開くことができます。
{{メールアドレス}} — スプレッドシートのメールアドレス列を指定{{件名列}} — スプレッドシートの件名列を指定@ を入力し、「メールの下書き」を選択