技術ブログ

GASとGmailで請求書を自動送信!初心者向け解説

/ 初心者向け

GASとGmailで請求書を自動送信!初心者向け解説

GASとGmailで請求書を自動送信!

ビジネスにおいて、請求書の発行・送付は避けて通れない業務です。しかし、手作業で行うと時間もかかり、ミスも発生しやすくなります。そこで今回は、Google Apps Script (GAS) とGmailを連携させて、請求書を自動送信する方法をご紹介します。GAS初心者の方でも理解できるように、具体的なコード例を交えながら解説していきます。

なぜGASとGmailを使うのか?

  • 無料: Googleアカウントがあれば、GASもGmailも無料で利用できます。
  • 連携の容易さ: GASはGoogle Workspaceのサービスと親和性が高く、Gmailとの連携も簡単です。
  • 自動化: 定型的な作業を自動化することで、業務効率を大幅に向上させることができます。
  • カスタマイズ性: GASを使えば、送付するメールの内容やタイミングなどを柔軟にカスタマイズできます。

事前準備

1. Googleアカウント: Gmailを利用するために必要です。

2. Google スプレッドシート: 請求書データ(顧客名、金額、期日など)を管理するために使用します。

3. 請求書テンプレート (Google ドキュメントまたはスプレッドシート): 請求書のひな形を用意します。

実装手順

1. 請求書データの準備(Google スプレッドシート)

まず、請求書に関する情報をまとめたGoogleスプレッドシートを作成しましょう。以下のような列を用意します。

  • 顧客名
  • メールアドレス
  • 請求金額
  • 請求日
  • 支払期日
  • 請求書ファイル名(後述)

2. 請求書テンプレートの準備

Google ドキュメントまたはスプレッドシートで、請求書のテンプレートを作成します。テンプレート内には、スプレッドシートのデータを差し込めるように、カスタム変数(例: {{顧客名}}, {{請求金額}})を配置しておきます。GASからこのテンプレートをコピーし、データを差し込んで請求書PDFを生成します。

3. GASスクリプトの作成

Google スプレッドシートを開き、「拡張機能」>「Apps Script」を選択してスクリプトエディタを開きます。

以下のコードは、スプレッドシートのデータを元に請求書PDFを生成し、Gmailで送信する基本的な例です。

function sendInvoices() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const dataRange = sheet.getDataRange();
  const values = dataRange.getValues();

  // ヘッダー行をスキップ
  const header = values.shift();

  for (let i = 0; i < values.length; i++) {
    const row = values[i];
    const customerName = row[0];
    const emailAddress = row[1];
    const amount = row[2];
    const dueDate = row[4]; // 支払期日
    const invoiceFileName = row[5]; // 請求書ファイル名

    // 請求書PDFの生成
    const invoiceBlob = generateInvoicePdf(customerName, amount, dueDate, invoiceFileName);

    // メール送信
    sendInvoiceEmail(emailAddress, customerName, invoiceBlob);
  }
}

function generateInvoicePdf(customerName, amount, dueDate, invoiceFileName) {
  // ここに請求書テンプレートからPDFを生成する処理を記述します。
  // 例: Google ドキュメントテンプレートをコピーし、テキストを置換してPDFとして保存。
  // 実際の実装は、テンプレートの形式や使用するサービスによって異なります。
  Logger.log(`${customerName} 様の請求書PDFを生成します。`);

  // ダミーのBlobを返します。実際には生成したPDFのBlobを返してください。
  return Utilities.newBlob('This is a dummy invoice PDF content.', 'application/pdf', invoiceFileName + '.pdf');
}

function sendInvoiceEmail(recipient, customerName, invoiceBlob) {
  const subject = `${customerName} 様 請求書のご送付`;
  const body = `${customerName} 様

いつもお世話になっております。`;
  
  GmailApp.sendEmail(recipient, subject, body, {
    attachments: [invoiceBlob]
  });
  
  Logger.log(`${recipient} 様へ請求書を送信しました。`);
}

4. メール本文と件名のカスタマイズ

sendInvoiceEmail 関数内の subjectbody を、必要に応じて変更してください。顧客名や請求内容などを動的に差し込むことも可能です。

5. トリガーの設定

スクリプトを自動実行するために、トリガーを設定します。スクリプトエディタの左側にある「時計」アイコンをクリックし、「トリガーを追加」を選択します。実行したい関数(例: sendInvoices)、実行するイベント(例: 時間主導型で毎日実行)などを設定します。

まとめ

GASとGmailを組み合わせることで、請求書発行・送付業務を劇的に効率化できます。今回ご紹介した内容は基本的なものですが、これをベースに、より高度な機能(エラーハンドリング、進捗管理など)を追加していくことも可能です。ぜひ、あなたのビジネスでもGASを活用して、業務改善に繋げてください!

---

GAS自動化の導入相談

請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。

請求書自動生成ツールを見る / SNS自動投稿ツールを見る