見積業務は、1件ずつ見ると数分〜数十分でも、毎回同じ作業を繰り返すと大きな負担になります。
よくあるのは、次のような流れです。
- 料金表を開く
- 商品・数量・オプションを確認する
- 金額を計算する
- 見積書へ転記する
- PDFにする
- メール本文を書く
- 添付して送る
- 条件変更があれば最初からやり直す
見積業務を効率化するときは、いきなり有料ツールを契約するより、まず「同じルールで計算する」「PDFを作る」「送る」という繰り返し作業をGoogleスプレッドシート+GASで自動化する方法があります。
Google Apps Script(GAS)はGoogleスプレッドシートを読み書きし、Google DriveやGmailなどのGoogleサービスと連携できます。Google公式でも、スプレッドシートのデータからPDFを生成し、メールへ添付して送る自動化サンプルが公開されています。
この記事では、無料から始めやすい方法として、Googleスプレッドシート+GASで見積業務を効率化する基本構成を紹介します。
そのうえで、自作では管理が大変になってきた場合に、Web見積もりシミュレーターの見積太郎を使うと何が楽になるのかも整理します。
情報の基準日:2026年8月19日
Google Apps Scriptの仕様・割り当て、見積太郎の機能・料金は変更される可能性があります。実際に利用する時点の公式情報を確認してください。
この記事にはアフィリエイトリンクが含まれます。
先に結論:見積業務は「計算・帳票・送信」の順に自動化する
最初から大きなシステムを作る必要はありません。
まず見積業務を、次の3段階に分けます。
| 段階 | 手作業で起こりやすいこと | 無料で効率化する方法 |
|---|---|---|
| 計算 | 料金表を探す、電卓で再計算する | Googleスプレッドシートで料金マスターと計算式を共通化 |
| 帳票 | 見積書へ同じ内容を転記する | GASでテンプレートへ反映しPDF生成 |
| 送信 | メール本文を書く、PDFを添付する | GASでメール文面作成・PDF添付・送信 |
この3つが安定すると、次に「顧客自身が条件を選ぶ」「複雑な条件分岐をWeb上で計算する」といった前工程を効率化できます。
その段階では、自作コードを増やすより、見積太郎のような専用ツールを比較する価値が出てきます。
見積業務で時間がかかる原因を分解する
1. 料金ルールが人の頭の中にある
担当者が料金表を見ながら毎回判断すると、同じ条件でも計算方法が変わることがあります。
まず必要なのは、自動化コードよりも料金ルールを表にすることです。
たとえば、次の項目をスプレッドシートへまとめます。
- 商品・サービス名
- 基本料金
- 単位
- 数量
- オプション
- 割引条件
- 追加料金
- 税率
- 備考
- 最終更新日
2. 見積書へ同じ情報を何度も転記している
顧客名、担当者名、商品名、数量、単価、金額、備考を、計算用シートから見積書へ毎回コピーしている場合は自動化しやすい部分です。
元データを1か所にし、見積書テンプレートへ必要な値だけ反映する形にすると、転記ミスを減らしやすくなります。
3. PDF化・ファイル名・保存場所が毎回バラバラ
「見積書_最新版.pdf」「見積書_修正版2.pdf」のように管理すると、どれが最新か分かりにくくなります。
GASでPDFを生成するときに、案件番号・顧客名・日付などからファイル名を統一できます。
4. メール送信まで手作業になっている
PDFを作れても、メール作成・宛先入力・添付が手作業なら、まだ繰り返し作業が残ります。
GASからGmailを利用すれば、スプレッドシート上のメールアドレス・顧客名・案件番号を使って送信処理までつなげられます。
無料で始める見積業務の基本構成
最小構成は次の4つです。
- Googleスプレッドシート:料金マスター・見積データ・帳票テンプレート
- Google Apps Script:計算・PDF生成・保存・送信
- Google Drive:生成したPDFの保存
- Gmail:見積書の送信
顧客から入力を受けたい場合は、Googleフォームを追加する方法もあります。
Google公式では、Apps Scriptからスプレッドシートを読み書きしたり、メニューやトリガーを追加したりできます。また、スプレッドシートをPDFへ変換し、Driveへ保存してGmailで送るサンプルも公開されています。
手順1:料金マスターを作る
最初に料金マスターシートを作ります。
例:
| 商品コード | 商品名 | 単価 | 税率 | 備考 |
|---|---|---|---|---|
| A001 | 基本プラン | 30000 | 10% | 基本作業 |
| A002 | 追加ページ | 5000 | 10% | 1ページあたり |
| A003 | 特急対応 | 10000 | 10% | 条件確認が必要 |
ポイントは、見積書へ直接金額を手入力しないことです。
商品コードや料金マスターを基準に計算すれば、価格改定時も1か所を更新しやすくなります。
手順2:見積入力シートを作る
次に見積入力シートを作ります。
最低限、次のような項目を用意します。
- 案件番号
- 顧客名
- 担当者名
- メールアドレス
- 商品コード
- 数量
- オプション
- 値引き
- 備考
単価は料金マスターから取得し、数量との掛け算や税計算はシートの数式で処理しても構いません。
複雑な条件が少ないうちは、計算はスプレッドシート、帳票化と送信はGASという分担が分かりやすいです。
完成形は、次のように「人が入力するセル」と「料金マスター・数式で自動的に決まるセル」を分けておくと理解しやすくなります。
| 商品コード | 商品名 | 数量 | 単価 | 小計 |
|---|---|---|---|---|
| A001 | 基本プラン | 1 | 30,000円 | 30,000円 |
| A002 | 追加ページ | 3 | 5,000円 | 15,000円 |
| A003 | 特急対応 | 1 | 10,000円 | 10,000円 |
| 小計 | 55,000円 | |||
| 消費税(10%) | 5,500円 | |||
| 合計 | 60,500円 | |||
ポイント:商品コードと数量だけ入力すれば、商品名・単価は料金マスターから取得し、小計・税・合計は数式で計算する形にすると、入力箇所を減らせます。
手順3:見積書テンプレートへ値を設定する
まず見積書テンプレートシートを作り、印刷・PDF化したときの完成レイアウトを用意します。
例:
- 発行日
- 見積番号
- 顧客名
- 件名
- 明細
- 小計
- 消費税
- 合計
- 有効期限
- 備考
- 自社情報
ここで大事なのは、見た目を作るだけで終わらず、「見積入力のどのセルを、テンプレートのどのセルへ入れるか」まで決めることです。
3-1. 入力セルと転記先セルの対応を決める
この記事の例では、次のように対応させます。
| 入力する内容 | 見積入力シート | 見積書テンプレート | 転記後の用途 |
|---|---|---|---|
| 案件番号 | B2 | B2 | 見積番号 |
| 顧客名 | B3 | B3 | 宛名 |
| 件名 | B6 | B5 | 見積件名 |
| 明細(商品名・数量・単価・小計) | C10:F12 | B9:E11 | 明細3行 |
| 合計金額 | F17 | F20 | お見積金額 |
セル番地はテンプレートの作り方によって変わります。自分のシートで配置が違う場合は、左側の「見積入力」と右側の「見積書テンプレート」のセル番地を自分の配置に合わせて置き換えてください。
御 見 積 書
B5:件名 Webサイト制作一式
| 品名 | 数量 | 単価 | 金額 |
|---|---|---|---|
| 基本プラン | 1 | 30,000円 | 30,000円 |
| 追加ページ | 3 | 5,000円 | 15,000円 |
| 特急対応 | 1 | 10,000円 | 10,000円 |
ポイント:「見積入力B3の顧客名を、テンプレートB3へ入れる」のようにセル番地まで決めると、GASではその対応をそのままコードへ書けます。
3-2. Apps Scriptを開く
Googleスプレッドシート上部の 拡張機能 → Apps Script を開きます。
初めて使う場合は新しいスクリプトプロジェクトが開くので、最初から入っているサンプルコードを消し、次のコードを貼り付けます。
3-3. 入力シートの値をテンプレートへ転記するコードを書く
function setEstimateTemplate() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const input = ss.getSheetByName('見積入力');
const template = ss.getSheetByName('見積書テンプレート');
// 1. 見積入力シートから値を読み取る
const estimateNo = input.getRange('B2').getDisplayValue();
const customerName = input.getRange('B3').getDisplayValue();
const subject = input.getRange('B6').getDisplayValue();
const lineItems = input.getRange('C10:F12').getValues();
const total = input.getRange('F17').getValue();
// 2. 見積書テンプレートの対応するセルへ書き込む
template.getRange('B2').setValue(estimateNo);
template.getRange('B3').setValue(`${customerName} 御中`);
template.getRange('B5').setValue(subject);
template.getRange('B9:E11').setValues(lineItems);
template.getRange('F20').setValue(total);
// 3. 書き込みを反映する
SpreadsheetApp.flush();
}
処理はシンプルで、getRange()でセルを指定し、getDisplayValue()やgetValues()で読み取り、setValue() / setValues()でテンプレートへ書き込んでいます。
1セルだけならsetValue()、今回の明細のように複数行・複数列をまとめて入れる場合はsetValues()を使います。
3-4. スクリプトを実行して転記結果を確認する
コードを貼り付けたら、次の順で確認します。
- Apps Scriptで保存する
- 上部の関数選択から
setEstimateTemplateを選ぶ - 実行を押す
- 初回だけGoogleアカウントの権限確認を行う
- スプレッドシートへ戻り、
見積書テンプレートシートを開く - 見積番号・宛名・件名・明細・合計金額が入っていることを確認する
たとえば見積入力!B3へ「株式会社サンプル」と入力していた場合、実行後の見積書テンプレート!B3には「株式会社サンプル 御中」と入ります。
ここまで確認できれば、「入力シートへ1回入力する → GASを実行する → 顧客へ渡す見積書の形へ自動転記する」という流れが完成です。
もし値が違う場所へ入った場合は、コードのB2やF20などのセル番地と、自分が作ったシート上の位置が一致しているかを確認してください。
手順4:GASでPDFを生成する
手順3でテンプレートへの転記まで確認できたら、次はそのテンプレートをPDFへ変換します。
次のコードでは、最初にsetEstimateTemplate()を実行して最新の入力内容をテンプレートへ反映してから、PDFを書き出します。
function createEstimatePdf() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const input = ss.getSheetByName('見積入力');
const template = ss.getSheetByName('見積書テンプレート');
// 最新の入力内容を見積書テンプレートへ反映
setEstimateTemplate();
const estimateNo = input.getRange('B2').getDisplayValue();
const customerName = input.getRange('B3').getDisplayValue();
SpreadsheetApp.flush();
const url = `https://docs.google.com/spreadsheets/d/${ss.getId()}/export` +
`?format=pdf&gid=${template.getSheetId()}&portrait=true&fitw=true&gridlines=false`;
const response = UrlFetchApp.fetch(url, {
headers: { Authorization: `Bearer ${ScriptApp.getOAuthToken()}` },
});
const fileName = `${estimateNo}_${customerName}_見積書.pdf`;
const file = DriveApp.createFile(response.getBlob().setName(fileName));
return file;
}
これで処理の順番は、見積入力 → テンプレートへ転記 → PDF生成になります。
Google公式のPDF生成サンプルも、スプレッドシートのテンプレートへデータを入れ、PDFへ書き出してDriveへ保存する構成です。
手順5:Gmailで見積書を送る
PDF生成後、そのファイルをGmailへ添付できます。
function sendEstimate() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const input = ss.getSheetByName('見積入力');
const email = input.getRange('B4').getDisplayValue();
const customerName = input.getRange('B3').getDisplayValue();
const file = createEstimatePdf();
GmailApp.sendEmail(
email,
`【お見積書】${customerName} 様`,
`${customerName} 様\n\nお見積書をお送りします。内容をご確認ください。`,
{ attachments: [file.getBlob()] },
);
}
実際には誤送信を防ぐため、最初から自動送信にせず、PDF生成 → 内容確認 → 送信ボタンのように人の確認を残す運用がおすすめです。
GASで見積業務を効率化するメリット
GASの魅力は、今あるGoogleスプレッドシートを使いながら、見積計算・PDF化・保存・送信の繰り返し作業を小さく自動化できることです。
1. 料金ルールを1か所へ集められる
料金表がExcel、メール、担当者のメモなどに分かれていると、見積のたびに「どの価格が最新か」を確認する必要があります。担当者ごとの判断差も出やすくなります。
料金マスターを1か所へまとめると、計算の起点を揃えられます。その結果、価格確認に使う時間や転記ミスを減らし、見積内容の確認へ集中しやすくなります。
2. PDF作成とファイル管理を自動化できる
手作業では、顧客名や金額のコピペ、PDF保存、ファイル名変更、保存先の選択を毎回繰り返します。この部分は判断が少ない一方で、ミスが起こりやすい作業です。
GASでPDF化と保存をまとめると、入力済みのデータから同じレイアウト・同じ命名ルールでPDFを作れます。その結果、「どのファイルが最新版か」を探す時間を減らし、再見積時も同じ流れで作り直しやすくなります。
3. メール送信まで同じデータからつなげられる
PDFだけ自動化しても、メール本文へ名前を入れ、宛先をコピーし、ファイルを添付する作業が残ると、送信ミスの余地があります。
見積データに登録した顧客名・メールアドレス・案件番号を、そのままメール下書きや送信処理へ使えば二重入力を減らせます。その結果、見積作成から送付までの手順を短くし、確認すべきポイントを金額・宛先・条件へ絞りやすくなります。
GASで無料自動化するときの注意点
Apps Scriptには割り当て・実行時間の制限がある
Apps Scriptには、メール送信、URL Fetch、トリガーの実行時間などに日次の割り当てがあります。一般ユーザー向けアカウントとGoogle Workspaceでも上限が異なります。
少量の見積を処理する小規模運用なら始めやすい一方、大量処理や高頻度の自動送信を前提にする場合は公式の割り当てを確認してください。
コードを保守する人が必要
料金ルールや帳票レイアウトが変わるたびに、スプレッドシートやGASを修正する可能性があります。
最初は無料でも、数年運用すると「どこを直せばいいか分かる人が自分しかいない」という状態になることがあります。
顧客向けWeb画面を作ると一気に複雑になる
社内の見積作成を自動化するだけならSheets+GASは扱いやすいですが、顧客自身がWeb上で商品・数量・オプションを選ぶ画面まで作ると、次の対応が必要になります。
- HTML・CSS・JavaScript
- スマートフォン対応
- 入力チェック
- 条件分岐
- エラー表示
- 公開URL
- セキュリティ
- 保守・更新
ここまで来ると、自作が必ずしも一番安いとは限りません。
自作が大変になったら見積太郎を検討する
GASで「社内の見積作成」を自動化した後、次に顧客自身へ概算金額を見せたいなら、見積太郎のようなWeb見積もりシミュレーター専用ツールへ移すと、自作する範囲を減らしやすくなります。
見積太郎は、商品・数量・オプション・条件分岐などを反映したWeb見積もりシミュレーターを作るためのツールキットです。
2026年8月時点の公式サイトでは、付属テンプレートとAI指示文を使ってシミュレーターを作成する構成が案内されており、本体のみの買い切り版は19,800円(税別)、年間サブスク版は9,900円/年(税別)から用意されています。
見積太郎へ切り替えるメリット
GASで社内処理を自動化しても、顧客から「Aの場合はいくら?」「このオプションを外したら?」と問い合わせが来るたびに担当者が計算する課題は残ります。
見積太郎で「顧客が条件を選んで概算を確認するWeb画面」を用意すると、顧客が自分で条件を選んで金額の目安を確認できます。その結果、問い合わせ前の料金説明を減らし、商談では個別条件や正式価格の確認へ時間を使いやすくなります。
詳しい機能・料金・使い方は、見積太郎のレビュー記事で整理しています。
GASと見積太郎はどちらを選ぶ?
| やりたいこと | Sheets+GAS | 見積太郎 |
|---|---|---|
| 社内で料金を自動計算 | ◎ | ○ |
| PDF見積書の生成 | ◎ | ○(概算PDF中心) |
| Gmail送信 | ◎ | 主目的ではない |
| 無料から試す | ◎ | △ |
| 顧客がWeb上で条件選択 | 自作が必要 | ◎ |
| 複雑な条件分岐のWeb表示 | 自作・保守が必要 | ◎ |
| スマホ向け公開UI | 自作が必要 | 見積用途の構成を利用しやすい |
| コード保守 | 自社 | 自社+提供ツールの範囲 |
Sheets+GASが向いている人
- まず無料で始めたい
- 社内の見積作成を速くしたい
- Googleスプレッドシートをすでに使っている
- 少量〜中量の見積を処理する
- GASを修正できる担当者がいる
見積太郎が向いている人
- 顧客にも概算金額を見せたい
- 商品・数量・オプションの組み合わせが多い
- 問い合わせ前の料金説明を減らしたい
- WebシミュレーターのUIをゼロから自作したくない
- 自社サイトへ見積導線を作りたい
見積太郎2が必要になるのは「見積後」のやり取りが増えたとき
見積太郎は、主に問い合わせ前・商談中の概算提示を効率化する役割です。
一方、見積を出した後に、顧客との質問、条件変更、再見積、返信履歴の管理まで必要なら見積太郎2が比較対象になります。
見積太郎と見積太郎2は単純な新旧関係ではありません。
- 見積太郎:公開シミュレーターで概算を出す
- 見積太郎2:顧客ごとの見積・相談・再見積を継続管理する
違いを詳しく確認したい場合は、見積太郎と見積太郎2の比較も確認してください。
まずはこの順番で効率化する
- 見積作業を「入力・計算・帳票・送信・再見積」に分解する
- 料金マスターをGoogleスプレッドシートへ集約する
- 計算式を共通化する
- GASで見積入力から見積書テンプレートへの転記を自動化する
- GASでPDF生成を自動化する
- 送信前の人の確認を残したままメール作成を効率化する
- 顧客からの概算問い合わせが多ければ見積太郎を検討する
- 再見積・相談履歴が増えたら見積太郎2を比較する
無料自動化の目的は「全部を自作すること」ではなく、繰り返し作業を減らし、どこから専用ツールへ任せた方が楽になるかを見極めることです。
参考にした公式情報
- Google Apps Script:Googleスプレッドシートを拡張
- Google Apps Script:スプレッドシートからPDFを生成して送信
- Google Apps Script:Googleサービスの割り当て
- 見積太郎公式サイト
- 見積太郎2公式サイト
最終確認日:2026年8月19日