GASとGmailで請求書を自動送信!初心者向け解説
/ 初心者向け
GASとGmailで請求書を自動送信!手間いらずの業務効率化
請求書の発行・送付作業、毎月大変ですよね?
「もっと効率化したい」「ミスを減らしたい」
そんな悩みを解決するのが、Google Apps Script(GAS)とGmailの連携です。
GASを使えば、ExcelやGoogle スプレッドシートに保存された請求情報を元に、自動で請求書を作成し、Gmailで顧客に送信することができます。今回は、この便利な自動化の方法を、初心者の方にも分かりやすく解説していきます。
なぜGASとGmailなのか?
GASは、Google Workspace(Gmail, スプレッドシート, ドキュメントなど)を連携・自動化するためのJavaScriptベースのスクリプト言語です。特別なソフトウェアのインストールは不要で、ブラウザ上で開発・実行できます。
Gmailとの連携は、GASの得意とするところ。
- 手軽に始められる: Googleアカウントがあればすぐに利用可能
- コストがかからない: 基本的な機能は無料
- 柔軟なカスタマイズ: 業務フローに合わせて自由に自動化
これらのメリットから、GASとGmailの組み合わせは、請求書自動送信に最適な選択肢と言えるでしょう。
請求書自動送信の全体像
大まかな流れは以下のようになります。
1. 請求データを用意する: Google スプレッドシートなどに顧客情報、請求金額、請求日などをリスト化します。
2. 請求書テンプレートを作成する: Google ドキュメントやスプレッドシートで、請求書のひな形を作成します。
3. GASでスクリプトを作成する: スプレッドシートからデータを取得し、テンプレートに反映させ、PDF化してGmailで送信する処理を記述します。
4. スクリプトを実行する: 定期実行トリガーを設定して、自動で処理が実行されるようにします。
準備するもの
- Googleアカウント: Gmail、Google ドキュメント、Google スプレッドシートが利用できるもの。
- 請求データ: Google スプレッドシートなどで管理された、請求対象となる顧客情報、金額、品目などのリスト。
- 請求書テンプレート: Google ドキュメントなどで作成した、請求書のひな形。
実践!GASで請求書を自動送信するコード例
ここでは、Google スプレッドシートに保存されたデータを元に、請求書PDFを作成し、Gmailで送信する基本的なスクリプト例をご紹介します。
1. Google スプレッドシートの準備
以下のようなシートを作成し、請求データを入力しておきます。
| 顧客名 | メールアドレス | 金額 | 請求日 | 支払期日 | 請求書番号 |
|---|---|---|---|---|---|
| 株式会社A | a@example.com | 10,000 | 2023/10/26 | 2023/11/25 | INV001 |
| 株式会社B | b@example.com | 20,000 | 2023/10/26 | 2023/11/25 | INV002 |
2. 請求書テンプレートの準備
Google ドキュメントで、以下のような請求書テンプレートを作成します。
請求書
発行日: <<請求日>>
宛先:
<<顧客名>> 様
件名: 〇〇サービスのご請求
拝啓
平素は格別のご高配を賜り、厚く御礼申し上げます。
さて、この度は下記の通りご請求申し上げます。
記
請求金額: <<金額>> 円
支払期日: <<支払期日>>
請求書番号: <<請求書番号>>
敬具
--------------------
[あなたの会社名]
[あなたの住所]
[あなたの連絡先]
<<請求日>> のような箇所は、GASで置換するためのプレースホルダーです。
3. GASスクリプトの作成
Google スプレッドシートを開き、「拡張機能」>「Apps Script」を選択して、スクリプトエディタを開きます。
function sendInvoices() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("請求データ"); // 請求データシート名に合わせて変更
var dataRange = sheet.getDataRange();
var values = dataRange.getValues();
// ヘッダー行をスキップ
for (var i = 1; i < values.length; i++) {
var row = values[i];
var customerName = row[0];
var email = row[1];
var amount = row[2];
var invoiceDate = Utilities.formatDate(row[3], "JST", "yyyy/MM/dd");
var dueDate = Utilities.formatDate(row[4], "JST", "yyyy/MM/dd");
var invoiceNumber = row[5];
// 請求書テンプレートのID
var templateDocId = "YOUR_TEMPLATE_DOCUMENT_ID"; // ここにテンプレートのドキュメントIDを入力
var templateFile = DriveApp.getFileById(templateDocId);
var copiedFile = templateFile.makeCopy();
var doc = DocumentApp.openById(copiedFile.getId());
var body = doc.getBody();
// テンプレートのプレースホルダーを置換
body.replaceText("<<顧客名>>", customerName);
body.replaceText("<<金額>>", amount);
body.replaceText("<<請求日>>", invoiceDate);
body.replaceText("<<支払期日>>", dueDate);
body.replaceText("<<請求書番号>>", invoiceNumber);
doc.saveAndClose();
// PDFとしてエクスポート
var pdfBlob = copiedFile.getAs('application/pdf');
pdfBlob.setName(invoiceNumber + "_請求書.pdf");
// Gmailで送信
GmailApp.sendEmail(email,
"【" + customerName + "】" + "請求書のご送付(" + invoiceDate + ")",
"\n" + customerName + " 様\n\nいつもお世話になっております。\n\n" +
"〇〇サービスのご請求書を添付いたしましたのでご確認ください。\n\n" +
"お支払い期日は " + dueDate + " です。\n\n" +
"よろしくお願いいたします。\n\n" +
"---\n" +
"[あなたの会社名]\n" +
"[あなたの連絡先]",
{attachments: [pdfBlob]});
// 作成したドキュメントを削除 (任意)
DriveApp.getFileById(copiedFile.getId()).setTrashed(true);
Logger.log(customerName + " 様へ請求書を送信しました。");
}
}
コード解説
SpreadsheetApp.getActiveSpreadsheet(): 現在開いているスプレッドシートを取得します。getSheetByName("請求データ"): 特定の名前のシートを取得します。getDataRange().getValues(): シートの全データを配列として取得します。DriveApp.getFileById(templateDocId): Google ドキュメントのテンプレートファイルを取得します。templateFile.makeCopy(): テンプレートファイルをコピーします。DocumentApp.openById(copiedFile.getId()).getBody().replaceText(...): コピーしたドキュメントのプレースホルダーを実際のデータで置換します。copiedFile.getAs('application/pdf'): ドキュメントをPDF形式で取得します。GmailApp.sendEmail(...): Gmailでメールを送信します。件名、本文、添付ファイルを指定できます。copiedFile.setTrashed(true): 不要になったコピーファイルをゴミ箱に移動します(自動削除)。
※注意点
YOUR_TEMPLATE_DOCUMENT_IDの部分は、ご自身の請求書テンプレートのGoogle ドキュメントIDに置き換えてください。ドキュメントIDは、URLの/d/と/editの間の文字列です。- 「請求データ」シートの名前も、ご自身のシート名に合わせて変更してください。
- 初めてGASからGmailやDriveの機能を使う場合、権限の承認を求められることがあります。画面の指示に従って承認してください。
4. スクリプトの実行とトリガー設定
スクリプトエディタの上部にある「実行」ボタン(▶︎)をクリックして、スクリプトが正常に動作するか確認します。
定期的に自動実行させたい場合は、左側の時計アイコン(トリガー)をクリックし、「トリガーを追加」から設定します。
- 実行する関数:
sendInvoicesを選択。 - 実行するデプロイ: 「ヘッド」を選択。
- イベントのソース: 「時間主導型」を選択。
- 時刻ベースのトリガーの種類: 「毎日のタイマー」や「月次タイマー」などを選択し、実行したい時間や曜日を設定します。
さらに高度な機能
今回ご紹介した内容は基本的なものですが、GASを使えばさらに多くの自動化が可能です。
- 請求書番号の自動採番: スプレッドシート上で管理し、連番を自動で付与。
- ステータス管理: 送信済みの請求書にフラグを立てるなど。
- エラーハンドリング: 送信エラーが発生した場合の通知機能。
- PDFへの直接出力: ドキュメントを介さず、スプレッドシートのデータを直接PDF化。
まとめ
GASとGmailを連携させることで、請求書の発行・送付作業を劇的に効率化できます。今回ご紹介したコード例を参考に、ぜひご自身の業務に合わせた自動化に挑戦してみてください。最初は戸惑うこともあるかもしれませんが、GASは非常に強力で柔軟なツールです。試行錯誤しながら、より快適な業務環境を構築していきましょう!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。