GASとGmailで請求書を自動送信!初心者向け解説
/ 初心者向け
GASとGmailで請求書を自動送信!手間を省いて業務効率アップ
経理担当者やフリーランスの皆さん、日々の請求書発行業務に追われていませんか?毎回手作業で請求書を作成し、メールで送信するのは時間も労力もかかりますよね。
そこで今回は、Google Apps Script(GAS)とGmailを連携させて、請求書を自動送信する方法をご紹介します!
GASは、Google Workspaceの各サービスを自動化できるJavaScriptベースのスクリプト言語です。プログラミング経験がなくても、少しの学習で様々な業務を自動化できます。Gmailとの連携も非常に簡単なので、初心者の方でも取り組みやすいテーマです。
この記事で学べること
- Google Apps Script(GAS)の基本的な使い方
- スプレッドシートから請求書データを取得する方法
- GASでGmailを操作し、メールを自動送信する方法
- 請求書PDFを添付して送信する方法
- 具体的なスクリプト例と解説
準備するもの
1. Googleアカウント: Gmailを利用するため必須です。
2. Googleスプレッドシート: 請求書データ(顧客名、請求金額、件名など)を管理します。
3. Googleドキュメント: 請求書のテンプレートを作成します。
ステップ1:請求書データをスプレッドシートで管理する
まずは、請求書に必要な情報をGoogleスプレッドシートで管理しましょう。以下のような列構成が考えられます。
- 顧客名
- メールアドレス
- 請求金額
- 請求日
- 支払期日
- ステータス(例: "未送信", "送信済")
例:
| 顧客名 | メールアドレス | 請求金額 | 請求日 | 支払期日 | ステータス |
| ------ | -------------- | -------- | -------- | -------- | ---------- |
| 株式会社〇〇 | example@example.com | 100,000 | 2023/10/27 | 2023/11/26 | 未送信 |
| △△商店 | sample@sample.com | 50,000 | 2023/10/27 | 2023/11/26 | 未送信 |
ステップ2:請求書テンプレートをGoogleドキュメントで作成する
請求書のひな形をGoogleドキュメントで作成します。GASからこのテンプレートをコピーし、スプレッドシートのデータを埋め込んで請求書PDFを生成します。
テンプレートには、後ほどGASで差し込みたい項目にプレースホルダーを設定しておきましょう。例えば、{{顧客名}}、{{請求金額}} のように、二重括弧で囲むと分かりやすいです。
ステップ3:GASで請求書を自動生成・送信するスクリプトを作成する
いよいよGASの出番です。Googleドライブで右クリックから「新規」→「その他」→「Google Apps Script」を選択して、新しいスクリプトエディタを開きましょう。
以下のスクリプトは、スプレッドシートのデータを取得し、ドキュメントテンプレートをコピーして請求書PDFを生成し、Gmailで送信する基本的な例です。
function sendInvoices() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
const dataRange = sheet.getDataRange();
const values = dataRange.getValues();
// ヘッダー行をスキップ
for (let i = 1; i < values.length; i++) {
const row = values[i];
const customerName = row[0];
const emailAddress = row[1];
const amount = row[2];
const invoiceDate = new Date(row[3]);
const dueDate = new Date(row[4]);
const status = row[5];
// ステータスが「未送信」の場合のみ処理を行う
if (status === "未送信") {
// ドキュメントテンプレートのIDを指定
const templateId = "YOUR_TEMPLATE_ID"; // ここにテンプレートのドキュメントIDを入力
const templateFile = DriveApp.getFileById(templateId);
const copiedFile = templateFile.makeCopy();
const doc = DocumentApp.openById(copiedFile.getId());
const body = doc.getBody();
// プレースホルダーをスプレッドシートのデータで置換
body.replaceText("{{顧客名}}", customerName);
body.replaceText("{{請求金額}}", amount.toLocaleString() + "円");
body.replaceText("{{請求日}}", Utilities.formatDate(invoiceDate, "JST", "yyyy/MM/dd"));
body.replaceText("{{支払期日}}", Utilities.formatDate(dueDate, "JST", "yyyy/MM/dd"));
// PDFとして保存
const pdfBlob = doc.getAs('application/pdf');
pdfBlob.setName("請求書_" + customerName + ".pdf");
// メール送信
const subject = "【請求書】" + customerName + "様";
const bodyText = "いつもお世話になっております。\n" +
customerName + "様\n" +
"\n" +
"〇〇株式会社です。\n" +
"\n" +
"下記、請求書をお送りいたします。ご確認よろしくお願いいたします。\n" +
"\n" +
"添付ファイルをご確認ください。\n" +
"\n" +
"よろしくお願いいたします。";
GmailApp.sendEmail(emailAddress,
subject,
bodyText,
{ attachments: [pdfBlob] });
// ステータスを「送信済」に更新
sheet.getRange(i + 1, 6).setValue("送信済");
// 作成したドキュメントを削除(任意)
DriveApp.getFileById(copiedFile.getId()).setTrashed(true);
}
}
}
コードの解説:
SpreadsheetApp.getActiveSpreadsheet(): 現在アクティブなスプレッドシートを取得します。sheet.getDataRange().getValues(): スプレッドシートの全データを配列として取得します。templateId = "YOUR_TEMPLATE_ID";: ここには、作成した請求書テンプレートのGoogleドキュメントのIDを入力してください。ドキュメントのURLの末尾にある長い文字列です。templateFile.makeCopy(): テンプレートファイルをコピーします。body.replaceText(): コピーしたドキュメント内のプレースホルダーをスプレッドシートのデータで置き換えます。doc.getAs('application/pdf'): ドキュメントをPDF形式で取得します。GmailApp.sendEmail(): Gmailを操作してメールを送信します。attachmentsオプションでPDFファイルを添付できます。sheet.getRange(i + 1, 6).setValue("送信済");: 処理が完了した行のステータスを更新します。
ステップ4:スクリプトを定期実行する
作成したスクリプトは、手動で実行することもできますが、トリガーを設定して自動実行するのが便利です。
スクリプトエディタの左側にある時計アイコン(トリガー)をクリックし、「トリガーを追加」ボタンを押します。
- 実行する関数を選択:
sendInvoicesを選択します。 - 実行するデプロイを選択:
Headを選択します。 - イベントのソースを選択: 「時間主導型」を選択します。
- 時間の間隔を選択: 「毎日」「週次」など、希望する実行間隔を設定します。
これにより、設定した時間に自動で請求書が送信されるようになります。
まとめ
Google Apps ScriptとGmailを組み合わせることで、請求書発行業務を大幅に自動化できます。今回の記事では、基本的な流れとスクリプト例をご紹介しましたが、さらに応用することで、以下のようなことも実現可能です。
- 領収書発行
- 督促状の自動送信
- 顧客ごとのカスタマイズメール作成
ぜひ、ご自身の業務に合わせてGASを活用し、効率化を図ってみてください!
もし、スクリプトの作成やデバッグで詰まった場合は、お気軽にコメントでご質問ください。
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。