請求書作成を自動化して月10時間削減する方法【GAS活用】

業務自動化📖 9分で読める
GAS業務自動化スプレッドシート効率化

毎月月末になると憂鬱になる「請求書作業」。取引先ごとに金額を確認して、テンプレートに入力して、PDF化して、メールで送って……気づけば半日が消えていた、という経験はないだろうか。

月20件の請求書を処理しているなら、1件あたり30分かかるとして月10時間がこの作業に消えている計算になる。これをGAS(Google Apps Script)で自動化すれば、その10時間を丸ごと取り戻せる。

請求書作業、どこに時間がかかっているのか

手作業での請求書処理をざっくり分解すると、こんな工程になる。

  • 取引先ごとの請求金額を確認・集計(5〜10分)
  • 請求書テンプレートに情報を入力(10〜15分)
  • PDF化して保存(2〜3分)
  • メールに添付して送信(5分)
  • 送付済み台帳に記録(3〜5分)

1件で平均25〜30分。これが20件あれば、単純計算で8〜10時間になる。しかも月末の忙しい時期に集中するから、精神的な負担も大きい。

自動化すれば、この一連の流れをボタン一つで完了させられる。

GASで自動化できる範囲

Google Apps Scriptは、Googleのサービスをプログラムで操作できるツールだ。費用は無料で、Googleアカウントがあればすぐ使い始められる。

請求書まわりでGASが使える場面は、大きく4つある。

まずスプレッドシートへの情報集約。取引先名・住所・請求金額・振込先を1枚のシートで管理すれば、GASがそこから自動で読み込む。各取引先のフォルダを開いて情報を確認する作業がなくなる。

次にPDF生成。Googleドキュメントでひな形さえつくってしまえばあとはGASが差し込んでくれる。ファイル名も「202603_株式会社〇〇_請求書.pdf」のように自動でつく。

それをGmailから送信。宛先・件名・本文もスプレッドシートの内容に合わせて動的に変わるので、コピペミスで別の会社に送ってしまうような事故がなくなる。

最後に送付台帳への記録。「あの請求書、送ったっけ?」を確認する手間がそもそもなくなる。

実装の基本的な流れ

実際の構築手順は、大きく4ステップだ。

1. スプレッドシートで台帳を作る

取引先情報を管理するシートを作成する。最低限必要な列はこのくらい。

内容
A 取引先名
B 担当者名
C メールアドレス
D 請求金額
E 請求月
F 送付済みフラグ

2. 請求書テンプレートを用意する

Googleドキュメントで請求書のひな形を作り、差し込みたい部分を {{取引先名}} {{請求金額}} のようなプレースホルダーで記述する。

3. GASのスクリプトを書く

スプレッドシートのメニューから「拡張機能 → Apps Script」を開き、以下のような処理を実装する。

function sendInvoices() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('請求先一覧');
  const data = sheet.getDataRange().getValues();

  // テンプレートドキュメントのID(URLから取得)
  const templateId = 'YOUR_TEMPLATE_DOC_ID';

  for (let i = 1; i < data.length; i++) {
    const row = data[i];
    const companyName = row[0];
    const contactName = row[1];
    const email = row[2];
    const amount = row[3];
    const sent = row[5];

    // 送付済みはスキップ
    if (sent === '済') continue;

    // テンプレートをコピーして差し込み
    const docCopy = DriveApp.getFileById(templateId).makeCopy(`請求書_${companyName}`);
    const doc = DocumentApp.openById(docCopy.getId());
    const body = doc.getBody();

    body.replaceText('{{取引先名}}', companyName);
    body.replaceText('{{担当者名}}', contactName);
    body.replaceText('{{請求金額}}', amount.toLocaleString() + '円');
    doc.saveAndClose();

    // PDF化
    const pdf = docCopy.getAs('application/pdf');

    // メール送信
    GmailApp.sendEmail(email, `【請求書送付】${companyName} 様`,
      `${contactName} 様\n\n請求書をお送りします。ご確認ください。`,
      { attachments: [pdf] }
    );

    // 台帳に記録
    sheet.getRange(i + 1, 6).setValue('済');
    sheet.getRange(i + 1, 7).setValue(new Date());

    // コピーしたドキュメントを削除(任意)
    docCopy.setTrashed(true);
  }
}

このスクリプトを月末に実行するだけで、全取引先への請求書送付が完了する。

4. 定期実行を設定する

「トリガー」を設定すれば、毎月25日など決まった日に自動実行できる。GASのメニューから「トリガーを追加」→「時間ベース」→「月タイマー」で設定する。

freee・マネーフォワードとの使い分け

「会計ソフトを使えばいいのでは?」という疑問もあるだろう。freeeやマネーフォワードにも請求書機能はあるが、GASアプローチとの違いはこうなる。

GAS自作 会計ソフト
費用 無料 月2,000〜5,000円〜
カスタマイズ性 高(自由に改変) 低(テンプレート制約あり)
会計連携 別途対応が必要 標準搭載
構築コスト 初期設定が必要 すぐ使える

請求書だけ自動化したいならGASで十分。確定申告まで含めて管理したいなら会計ソフトとの組み合わせを検討する価値がある。両方使うハイブリッドも有効だ。

まとめ:月末の憂鬱をなくす

スプレッドシートに情報を入力してボタンを押すだけで、20件分の請求書が全部片付く。個人的にはこれが一番わかりやすい「自動化の成果」だと思っている。目に見えて時間が浮くし、ミスが減るので精神的にもかなり楽になる。

ただ、初期の設定にはGASの基礎知識がいる。「コード触るのはハードルが高い」「自社の業務に合わせたいけど何から手をつければ」という場合は、外注するのも現実的な選択肢だ。

Coconalaの自動化支援サービスでは、GASを使った業務自動化の設計と実装を受け付けています。請求書に限らず、毎月繰り返している面倒な作業があればお気軽にご相談ください。