KNOW-HOW
過去の見積と請求書を自動で1か所に集め、台帳から会社の単価表と顧客別の単価表を数字で作れます。
見積の単価は、担当者の記憶とメールの添付ファイルに散らばります。前回の見積が手元に出てこないと、同じ取引先に前回と違う単価を出し、担当が替わると価格の根拠が消えます。見積書と請求書を電子データでやり取りした場合、送った分も含めて保存することが電子帳簿保存法で求められています。国税庁のパンフレットは保存の要件として、改ざん防止の措置(事務処理規程を定めて守る等)、日付・金額・取引先での検索、ディスプレイ・プリンタの備え付けを挙げています。基準期間の売上高が5,000万円以下等で、データのダウンロードの求めに応じられる場合は、検索の要件は不要とあります。この記事の受信簿は、日付・金額・取引先で検索できる一覧を兼ねます。改ざん防止の措置と備え付けは別に必要です。
困りごと→起きること→仕組みがあると
| 困りごと | 起きること | 仕組みがあると |
|---|---|---|
| 過去の見積がメールとPDFに散らばる | 同じ取引先に前回と違う単価を出す | 台帳から「前回いくらで出したか」を1本の式で引ける |
| 単価の根拠が担当者の記憶 | 担当が替わると価格の根拠が消える | 会社の単価表(件数・最小・平均・最大)が根拠になる |
| 見積・請求書PDFの保存が人任せ | 電子取引データを日付・金額・取引先で検索できない | 受信簿が検索用の一覧になる。改ざん防止の措置とディスプレイ・プリンタの備え付けは別途必要(国税庁パンフレット) |
| 値上げ交渉の材料がない | 労務費・処分費の上昇を単価に反映できない | 品目別の推移(最新年と前年の平均)を数字で示せる |
最初に、メールの送受信の両方から、見積書と請求書の添付PDFを規則的な名前で1か所に集めます。自動保存した名前は改名せず、恒久の名前にします。自動の仕組みは、添付1件ごとに「受信簿」へ1行(日時・送受・アドレス・保存ファイル名・状態=未入力)を足します。人は月1回、未入力の行のPDFを開き、明細(品目・数量・単価)を「1行=見積1通の1品目」の見積台帳に写します。写したら受信簿に取引先と合計金額を入れ、状態を「転記済」にします。見積・請求書でないPDFは「対象外」にします。Microsoft 365 なら Power Automate の標準コネクタだけで追加費用なしに組めます(対象プランに含まれます)。Google Workspace では Apps Script で関数を書きます。式と名前の見本は命名規則の表にあります。
受信簿の列と見本(自動で入るのは日時・送受・アドレス・保存ファイル名・状態=未入力。取引先と合計金額は人が入れる。合計金額は書類の額面。Microsoft 365 では状態の列名を Status にする。会社名は架空)
| 日時 | 送受 | アドレス | 保存ファイル名 | 取引先 | 合計金額 | 状態 |
|---|---|---|---|---|---|---|
| 2026-04-12 09:30 | 受 | a-sha@example.co.jp | 20260412-0930_a-sha@example.co.jp_見積依頼書.pdf | A社 | — | 対象外 |
| 2026-04-12 15:00 | 送 | a-sha@example.co.jp | 20260412-1500_送_a-sha@example.co.jp_御見積書.pdf | A社 | 72000 | 転記済 |
| 2026-04-30 10:10 | 送 | a-sha@example.co.jp | 20260430-1010_送_a-sha@example.co.jp_御請求書.pdf | A社 | 71100 | 転記済 |
| 2026-07-05 15:00 | 送 | c-sha@example.co.jp | 20260705-1500_送_c-sha@example.co.jp_買取見積書.pdf | C社 | 36000 | 転記済 |
| 2026-07-08 11:20 | 受 | b-sha@example.co.jp | 20260708-1120_b-sha@example.co.jp_注文書.pdf | 未入力 |
品目ごとの件数・最小・平均・最大・最新年の平均を並べたものが「会社としての単価見積表」、行=品目・列=取引先で最新年の平均単価を並べたものが「顧客別単価表」です。状態の値は、見積の行が「提出中・受注・失注・請求反映」、請求の行が「請求済」の5つに決めます。集計に入れるのは「受注」と「請求済」の行です。請求書を写したら、同じ案件の見積の行を「請求反映」に変え、二重に数えないようにします。この判定を補助列「集計」(1か0)に持たせ、ピボットと関数は集計=1で絞ります。失注・提出中は最小・最大の参考として分けて見ます。買取品目は単価をマイナスで入れると同じ表で集計できます(入れ方の一例)。
会社としての単価見積表(ピボットの結果イメージ・集計=1〔受注と請求済〕のみ・数字は架空)
| 品目 | 単位 | 件数 | 最小 | 平均 | 最大 | 2026年平均 |
|---|---|---|---|---|---|---|
| 廃プラスチック類(混合) | kg | 14 | 40 | 48 | 58 | 50 |
| 木くず | m3 | 6 | 5,800 | 6,400 | 7,200 | 6,500 |
| 金属くず(鉄) 買取 | kg | 9 | -15 | -11 | -8 | -12 |
| 4t車 運搬 | 回 | 22 | 15,000 | 17,500 | 20,000 | 18,000 |
会社の単価表は「この品目は最小いくら・平均いくらで受注しているか」、顧客別単価表と前回単価の式は「この取引先にはいくらで出してきたか」の根拠として、見積作成の前に見ます。自動保存の仕組みは黙って止まるため、月1回、保存先のPDFの数と受信簿の行数が一致するか、受信簿に「未入力」が残っていないかを確かめます。添付1件=1行のため、2つの数は一致します。値上げの相談では、品目別の推移(最新年と前年の平均)を台帳から出して示します。
顧客別単価表(行=品目・列=取引先・値=2026年の集計=1の平均単価。右端は XLOOKUP で別に引いた前回1件の単価・数字は架空)
| 品目 | A社 | B社 | C社 | A社 前回(日付) |
|---|---|---|---|---|
| 廃プラスチック類(混合) kg | 45 | — | — | 45(2026-04-30) |
| 木くず m3 | — | 6,400 | — | 6,500(2026-06-11 提出中) |
| 金属くず(鉄) kg | — | — | -12 | なし |
| 4t車 運搬 回 | 18,000 | 18,000 | 20,000 | 18,000(2026-04-30) |
見積台帳の見本(抜粋・1行=1品目・番号の頭 Q=見積 I=請求)。列は A番号 B日付 C取引先 D品目 E数量 F単位 G単価 H状態。右に I金額(=数量×単価) J担当 K元ファイル名(受信簿の保存ファイル名) L年 M集計 Nキー を続ける
| 番号 | 日付 | 取引先 | 品目 | 数量 | 単位 | 単価(円) | 状態 |
|---|---|---|---|---|---|---|---|
| Q-2026-0412 | 2026-04-12 | A社 | 廃プラスチック類(混合) | 1200 | kg | 45 | 請求反映 |
| Q-2026-0412 | 2026-04-12 | A社 | 4t車 運搬 | 1 | 回 | 18000 | 請求反映 |
| I-2026-0430 | 2026-04-30 | A社 | 廃プラスチック類(混合) | 1180 | kg | 45 | 請求済 |
| I-2026-0430 | 2026-04-30 | A社 | 4t車 運搬 | 1 | 回 | 18000 | 請求済 |
| Q-2026-0503 | 2026-05-03 | B社 | 廃プラスチック類(混合) | 800 | kg | 52 | 失注 |
| Q-2026-0611 | 2026-06-11 | A社 | 木くず | 15 | m3 | 6500 | 提出中 |
| Q-2026-0705 | 2026-07-05 | C社 | 金属くず(鉄) 買取 | 3000 | kg | -12 | 受注 |
ファイル名・フォルダーの規則と、Power Automate の式の見本(受信日時・差出人・件名・添付ファイルの名前は動的なコンテンツ)
| 対象 | 規則・式 | 例 | 根拠・注記 |
|---|---|---|---|
| 自動保存のPDF(受信) | 受信日時_差出人アドレス_元ファイル名.pdf | 20260412-0930_a-sha@example.co.jp_見積依頼書.pdf | この名前を恒久の名前にする。改名しない。検索は受信簿で行う |
| 自動保存のPDF(送信) | 送信日時_送_宛先アドレス_元ファイル名.pdf | 20260412-1500_送_a-sha@example.co.jp_御見積書.pdf | 送信済みアイテムでは差出人が自社になるため、宛先を名前に使う |
| メール本文 | 同じ接頭辞_本文.md | 20260412-0930_a-sha@example.co.jp_本文.md | PDFと接頭辞で紐づく。「Html からテキストへ」の結果を .md の名前で保存する |
| メール1通(必要な場合) | 同じ接頭辞_メール.eml | 20260412-0930_a-sha@example.co.jp_メール.eml | 「電子メールのエクスポート (V2)」の出力を保存する |
| 接頭辞の式 | convertTimeZone(受信日時,'UTC','Tokyo Standard Time','yyyyMMdd-HHmm') | 20260412-0930 | 日時が UTC(末尾が Z)で渡る場合に日本時間へ直す |
| ファイル名の式 | concat(接頭辞,'_',差出人,'_',添付ファイルの名前) | 上のPDFの例と同じ | 文字列の連結は concat 関数で行う |
| PDFだけ通す条件 | endsWith(添付ファイルの名前,'.pdf') が true、かつ インライン が false | image001.png は保存しない | endsWith は大文字と小文字を区別しない |
| 件名を名前に使う場合 | replace(replace(件名,':','_'),'/','_') | Re_ 見積の件 | SharePoint と OneDrive のファイル名に使えない文字を取り除く |
| 手動保存のPDF(フローを使わない場合) | 日付_金額_取引先.pdf(金額=その1通の合計) | 20260412_72000_A社.pdf | 国税庁パンフレットの「規則的なファイル名」の例と同じ並び |
| フォルダー | 自動保存=年/月。手動保存=年/取引先 も可 | 2026/04/ | 国税庁パンフレット(特定のフォルダに集約) |
工程ごとの道具(環境別)
| 工程 | Microsoft 365 | Google Workspace | どちらでもない |
|---|---|---|---|
| 添付PDFを1か所に集める | Power Automate: 新しいメールが届いたとき (V3)→Apply to each→条件(.pdf・インラインでない)→ファイルを作成する | Gmail フィルタ(has:attachment filename:pdf)→Apps Script を時間主導型トリガーで実行 | 手動保存+命名規則 |
| メール本文を保存 | コンテンツ変換(プレビュー)「Html からテキストへ」→ファイルを作成する(.md) | Apps Script の getPlainBody() を createFile で .md として保存 | テキスト形式で保存 |
| メール1通を丸ごと保存 | Office 365 Outlook「電子メールのエクスポート (V2)」→ファイルを作成する(.eml) | — | — |
| 受信簿に1添付=1行を自動追記 | Excel Online (Business)「テーブルに行を追加する」(Excel の表が必要) | Apps Script の appendRow でシート末尾に1行追加 | 手入力 |
| PDFの表を取り込む | Excel [データ]>[データの取得]>[ファイルから]>[PDF から](人が実行・.NET Framework 4.5 以降が必要) | ドライブ→アプリで開く→Google ドキュメント(2MB以下・表は検出されない可能性)→人が写す | 手入力 |
| 請求書PDFから項目を自動抽出 | AI Builder 請求書処理(AI Builder クレジット消費・有料) | — | — |
| 単価の集計 | Excel ピボットテーブル/AVERAGEIFS/XLOOKUP | スプレッドシート ピボット テーブル/QUERY/XLOOKUP | 表計算ソフトのピボット機能 |
| 月次点検の通知 | スケジュール済みクラウド フロー+「メールを送信する (V2)」 | Apps Script 時間主導型トリガー+MailApp.sendEmail | 手作業(月末) |
| 道具 | 無料か有料か | 役割 |
|---|---|---|
| Power Automate(標準コネクタ) | 無料(対象の Office 365 / Microsoft 365 プラン〔Business Basic/Standard/Premium、E1/E3/E5 等〕に含まれる。1日 6,000 アクション) | メール添付の自動保存・本文のテキスト化・受信簿への行の追加・月次点検メール |
| Excel(Power Query・ピボットテーブル・AVERAGEIFS・XLOOKUP) | 無料(Excel に含まれる。Power Query「PDF から」は .NET Framework 4.5 以降が必要。XLOOKUP は Excel 2016・2019 では使えない) | PDF の表の取り込み・単価の集計・前回単価の検索 |
| AI Builder 請求書処理・テキスト認識 | 有料(AI Builder クレジットが必要。Microsoft 365 ライセンスには含まれない。新規顧客は Copilot クレジットを購入。Premium ライセンスの付属分は2026年11月1日に廃止。未使用分の繰り越しなし) | 請求書PDFの明細の抽出・スキャン画像の文字起こし |
| Gmail フィルタ+Apps Script | 無料(Google Workspace に含まれる。1日の実行時間などの上限あり) | 添付PDFと本文の自動保存・受信簿への行の追加・月次点検メール |
| Google スプレッドシート(ピボット テーブル・QUERY・XLOOKUP) | 無料(Workspace に含まれる) | 単価の集計・前回単価の検索 |
| Google ドライブの Google ドキュメント変換 | 無料(Workspace に含まれる。ファイルは 2MB 以下。リスト・表・列は検出されない可能性あり) | スキャンPDFの文字起こし |
見積書や請求書と同じく、契約書の項目抽出は難しいため、本気で作ったものをSaaSに実装して使えるようにしています。