GAS請求書・帳票 |

GASで見積書を自動生成|テンプレートから一括作成する手順

GASで見積書を自動生成|テンプレートから一括作成する手順

見積書の作成に毎回30分以上かかっていませんか。スプレッドシートのテンプレートを開き、顧客名・品目・金額を手入力し、PDFに変換してメールに添付する。月に20件の見積書を出す会社であれば、この作業だけで月10時間以上を消費している計算になります。

Google Apps Script(GAS)を使えば、スプレッドシートに入力したデータから見積書を自動生成し、PDF変換・メール送付まで一気通貫で処理できます。この記事では、テンプレートの設計からGASのサンプルコード、よくある失敗パターンと回避策まで、実務で使える手順を解説します。

GASによる見積書自動生成の全体像

GASで見積書を自動生成する仕組みは、大きく4つのステップで構成されています。データ入力シートに顧客情報と品目を入力し、GASがテンプレートシートへデータを転記して見積書を生成し、最後にPDFとして出力する流れです。

GAS見積書自動化の全体フロー

GAS見積書自動化の全体フロー(データ入力→転記→PDF→メール)

自動化の基本構成

ステップ 処理内容 使用する機能
1. データ入力 顧客名・品目・単価・数量を入力シートに記載 Googleスプレッドシート
2. テンプレート転記 入力データをテンプレートシートの所定セルに自動転記 GAS(SpreadsheetApp)
3. PDF出力 テンプレートシートをPDFに変換し、Google Driveに保存 GAS(UrlFetchApp)
4. メール送付(任意) 生成したPDFを添付してメールを自動送信 GAS(GmailApp)

この構成の利点は、Googleアカウントがあれば追加コストなしで構築できることです。外部ツールの契約も不要で、スプレッドシートとGASだけで完結します。

テンプレートシートの設計方法

見積書の自動生成を成功させるカギは、テンプレートシートの設計にあります。GASが値を書き込むセルの位置を固定し、印刷範囲を明確にしておくことが重要です。

テンプレートに含めるべき項目

セル位置(例) 項目 備考
B2 見積番号 自動採番(年月+連番)
B3 発行日 実行日を自動入力
B5 宛先(顧客名) データシートから転記
B8〜B17 品目名 最大10行分を確保
C8〜C17 数量 整数値
D8〜D17 単価 通貨フォーマット
E8〜E17 金額 数量 × 単価の数式
E18 小計 SUM関数
E19 消費税 小計 × 10%
E20 合計金額 小計 + 消費税

テンプレート設計の注意点

金額セル(E列)には数式を入れておき、GASからは品目・数量・単価のみを書き込む設計にしてください。GASで金額計算もさせると、スプレッドシート上の表示とPDF出力時の値がずれるトラブルが発生しやすくなります。

無料ダウンロード

業務自動化でできること100選

経理・人事・営業・CS・総務・ITの6部門100事例を収録。各事例に月間削減時間と導入難易度を明記。今日から始められるチェックリスト付き。

無料ダウンロード

見積書を自動生成するGASサンプルコード

以下は、データシートの情報をテンプレートシートに転記し、見積書を生成するGASのサンプルコードです。スプレッドシートのスクリプトエディタ(拡張機能 > Apps Script)に貼り付けて使用できます。

データ転記のコア処理

まず、データシートから顧客情報と品目データを取得し、テンプレートシートに書き込む処理です。

コード(スクリプトエディタに貼り付けて使用)
function generateEstimate() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataSheet = ss.getSheetByName('データ');
  var templateSheet = ss.getSheetByName('見積テンプレート');
  var lastRow = dataSheet.getLastRow();

  for (var i = 2; i <= lastRow; i++) {
    var customerName = dataSheet.getRange(i, 1).getValue();
    var items = dataSheet.getRange(i, 2).getValue();
    var quantity = dataSheet.getRange(i, 3).getValue();
    var unitPrice = dataSheet.getRange(i, 4).getValue();

    // テンプレートの品目エリアを初期化
    templateSheet.getRange('B8:E17').clearContent();

    // データ転記
    templateSheet.getRange('B5').setValue(customerName + ' 御中');
    templateSheet.getRange('B2').setValue(generateEstimateNo());
    templateSheet.getRange('B3').setValue(new Date());
    templateSheet.getRange('B8').setValue(items);
    templateSheet.getRange('C8').setValue(quantity);
    templateSheet.getRange('D8').setValue(unitPrice);

    // 数式再計算を待つ
    SpreadsheetApp.flush();
    Utilities.sleep(2000);

    // PDF生成
    createPdf(ss.getId(), templateSheet.getSheetId(), customerName);
  }
}

function generateEstimateNo() {
  var now = new Date();
  var y = now.getFullYear();
  var m = ('0' + (now.getMonth() + 1)).slice(-2);
  var random = ('000' + Math.floor(Math.random() * 1000)).slice(-3);
  return 'EST-' + y + m + '-' + random;
}

このコードでは、品目エリアの初期化(clearContent)を転記前に行うことで、前回データが残るトラブルを防いでいます。generateEstimateNo関数で「EST-202604-001」のような見積番号を自動採番します。

PDF変換とメール送付の自動化

テンプレートへのデータ転記が完了したら、次はPDFへの変換です。GASではスプレッドシートの特定シートをPDFとしてエクスポートするAPIが用意されています。

PDF生成のコード

コード
function createPdf(ssId, sheetId, customerName) {
  var url = 'https://docs.google.com/spreadsheets/d/'
    + ssId + '/export?'
    + 'format=pdf'
    + '&gid=' + sheetId
    + '&size=A4'
    + '&portrait=true'
    + '&fitw=true'
    + '&gridlines=false';

  var options = {
    headers: {
      'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
    }
  };

  var response = UrlFetchApp.fetch(url, options);
  var pdfBlob = response.getBlob()
    .setName(customerName + '_見積書.pdf');

  var folder = DriveApp.getFolderById('フォルダIDをここに入れる');
  var file = folder.createFile(pdfBlob);
  return file;
}

エクスポートURLのパラメータで用紙サイズ(A4)、向き(縦)、グリッド線の非表示などを指定しています。生成されたPDFはGoogle Driveの任意のフォルダに保存されます。

メール自動送付(オプション)

生成したPDFをそのままメールに添付して送る場合は、GmailApp.sendEmailを使います。

コード
function sendEstimateMail(email, customerName, pdfBlob) {
  GmailApp.sendEmail(
    email,
    customerName + '様 お見積書のご送付',
    customerName + '様
お世話になっております。
' +
    'お見積書を添付にてお送りいたします。
' +
    'ご不明点がございましたらお気軽にお問い合わせください。

' +
    '株式会社○○',
    { attachments: [pdfBlob] }
  );
}

データシートに顧客のメールアドレス列を追加しておけば、見積書の生成からメール送付まで完全に自動化できます。月20件の見積書発行であれば、月10時間の手作業がボタン1つに置き換わります。

よくある失敗パターンと回避策

GASによる見積書自動化は比較的シンプルな処理ですが、実務で運用すると想定外のトラブルが起こります。BoostXがこれまで22パターンのGASテンプレートを構築してきた中で、繰り返し見てきた失敗パターンを紹介します。

失敗パターン 原因 回避策
金額が0円で出力される SpreadsheetApp.flush()を入れていないため、数式の再計算前にPDF化される 転記後に必ずflush()を実行。さらにUtilities.sleep(2000)で2秒待機を入れる
PDFのレイアウトが崩れる 印刷範囲が未設定、またはセル幅がA4に収まっていない テンプレートシートで「ファイル > 印刷 > 印刷範囲の設定」を事前に実施。fitw=trueを指定
見積番号が重複する 連番管理をランダム値で行っている スプレッドシートに「最終番号」セルを作り、PropertiesServiceで排他制御する
6分制限でタイムアウト 一度に大量の見積書を生成しようとして実行時間を超過 1回の実行を30件以内に分割し、時間ベースのトリガーで複数回に分けて実行
前回のデータが残る テンプレートシートの品目欄をクリアせずに次の見積書を転記 転記前にclearContent()で品目エリアを初期化する処理を追加

実務での注意点

消費税率の変更(軽減税率対応など)に備えて、税率はセルやスクリプトプロパティで管理し、コード内にハードコーディングしないことをおすすめします。税率変更のたびにコードを修正する手間がなくなります。

構築にかかる工数と費用の目安

GASによる見積書自動化の構築方法は、大きく「自社で構築」と「外注」の2つに分かれます。それぞれの工数と費用の目安は以下のとおりです。

項目 自社構築 外注(フリーランス) 外注(開発会社)
構築期間 2〜5日(学習含む) 3〜7営業日 2〜4週間
初期費用 0円(人件費のみ) 10万〜30万円 30万〜80万円
月額保守 0円(自社対応) 1万〜3万円 3万〜5万円
カスタマイズ性 高い(自社で自由に変更可) 中(追加費用が発生) 高い(要件定義から対応)
サポート なし 契約期間内 SLA付きサポートあり

見積書の自動化だけであれば自社構築も十分に可能です。ただし、請求書・納品書・発注書など複数の帳票を横断的に自動化したい場合や、既存の基幹システムとAPI連携が必要な場合は、専門の開発パートナーに依頼するほうが結果的にコストを抑えられます。

GASの公式ドキュメント(Google Apps Script公式リファレンス)には、SpreadsheetAppやGmailAppの全メソッドが掲載されています。自社構築に挑戦する場合の参考になります。

よくある質問

Q.GASで見積書を自動生成するのにプログラミング経験は必要ですか?

A.基本的なスプレッドシート操作ができれば、サンプルコードのコピー&ペーストで動かせます。変数名やセル範囲を自社フォーマットに合わせて変更する程度の調整は必要ですが、本格的なプログラミング経験は不要です。

Q.自動生成した見積書のフォーマットは変更できますか?

A.はい。テンプレートとなるスプレッドシートのデザインを変更すれば、そのまま出力に反映されます。ロゴの挿入、色の変更、項目の追加・削除なども自由に調整できます。

Q.1回の実行で何枚の見積書を生成できますか?

A.GASの実行時間制限は1回あたり6分です。見積書1枚の生成に約5〜10秒かかるため、1回の実行で30〜70枚程度の一括生成が可能です。それ以上の枚数が必要な場合はトリガーで分割実行します。

Q.GASの見積書自動化を外注する場合の費用相場は?

A.フリーランスへの依頼で10万〜30万円、開発会社への依頼で30万〜80万円が相場です。BoostXでは初期10万円〜+月額保守3〜5万円で対応しています。テンプレートの複雑さや連携先の数で費用が変動します。

まとめ

この記事のポイント

  • GASを使えば、スプレッドシートのテンプレートから見積書をPDFとして自動生成できます。追加コストは不要です
  • テンプレート設計では、金額セルに数式を入れておき、GASからは品目・数量・単価のみを書き込む構成が安定します
  • SpreadsheetApp.flush()の実行忘れや印刷範囲の未設定は、もっとも多い失敗原因です。事前に確認してください
  • 自社構築なら2〜5日・費用0円で導入可能です。複数帳票の横断自動化やAPI連携が必要な場合は外注も選択肢になります
  • 月20件の見積書発行で月10時間の削減が見込めます。繰り返し作業こそGAS自動化の効果が大きい領域です

吉元大輝

よしもとひろき

株式会社BoostX 代表取締役社長

中小企業の生成AI導入を支援する「生成AI伴走顧問」サービスを提供。業務可視化から定着支援まで、一気通貫で企業のAI活用を推進している。

2026年4月

SNSで共有する
無料個別相談

貴社の業務に、 AIという確かな選択肢を。

「何から始めればいいか分からない」という段階でも構いません。現状の課題を伺い、最適な導入計画をプロと一緒に整理します。

\ 専門家による30分のヒアリング /

無料相談を予約する

オンライン対応可能・強引な勧誘なし

まずは資料で情報収集したい方へ

サービス概要・料金・導入事例をまとめた資料を無料でお送りします。

資料をダウンロード