GASとGmailで請求書を自動送信!初心者向け解説
/ 初心者向け
GASとGmailで請求書を自動送信!効率化を実現しましょう
ビジネスにおいて、請求書の発行と送付は避けて通れない業務です。しかし、一件一件手作業で行うのは時間と手間がかかり、ミスも発生しやすくなります。そこで今回は、Google Apps Script(GAS)とGmailを連携させて、請求書を自動送信する方法をご紹介します。GAS初心者の方でも理解できるよう、丁寧に解説していきますので、ぜひ最後までご覧ください。
1. Google Apps Script (GAS) とは?
GASは、Googleが提供するJavaScriptベースのクラウドスクリプト言語です。Gmail、Googleスプレッドシート、Googleドキュメントなど、Google Workspaceの様々なサービスと連携し、業務の自動化や効率化を実現できます。
2. 請求書自動送信の全体像
今回作成するスクリプトでは、以下の流れで請求書を自動送信します。
1. Googleスプレッドシートに請求書情報を入力: 請求先情報、請求金額、発行日などをスプレッドシートにまとめます。
2. GASがスプレッドシートの情報を読み取る: スプレッドシートに新しい行が追加されたり、特定の条件を満たした場合にGASが反応します。
3. 請求書PDFを生成(または既存のPDFを参照): スプレッドプレッドシートの情報を元に、請求書PDFを作成します。今回は、GASでPDFを生成するのではなく、事前に用意した請求書テンプレートにデータを差し込む、もしくはスプレッドシート自体をPDFとして保存するイメージで進めます。
4. Gmailで請求書を添付して送信: 生成された請求書PDFを添付し、指定されたメールアドレスに自動送信します。
3. 事前準備
- Googleアカウント: Gmailを利用するため、Googleアカウントが必要です。
- Googleスプレッドシート: 請求書情報を管理するためのスプレッドシートを用意します。最低限、以下の列があると便利です。
- 請求先会社名
- 担当者名
- メールアドレス
- 請求金額
- 請求書番号
- 発行日
- 送信済みフラグ (例: "未送信", "送信済")
- 請求書テンプレート(任意): もし、GASで動的に請求書PDFを生成したい場合は、別途テンプレートを用意する必要があります。今回は、シンプルにするために、スプレッドシートから直接PDF化する、もしくは簡単なテキストメールで代用するケースを想定します。
4. GASスクリプトの作成
Googleスプレッドシートを開き、「拡張機能」>「Apps Script」を選択してスクリプトエディタを開きます。
4.1. スプレッドシートのデータを読み取る
まず、スプレッドシートのデータを取得する関数を作成します。
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 recipientName = row[0]; // 請求先会社名
const contactPerson = row[1]; // 担当者名
const emailAddress = row[2]; // メールアドレス
const invoiceAmount = row[3]; // 請求金額
const invoiceNumber = row[4]; // 請求書番号
const issueDate = row[5]; // 発行日
const sentStatus = row[6]; // 送信済みフラグ
// まだ送信されていない請求書のみ処理
if (sentStatus === "未送信") {
// ここにメール送信処理を記述
}
}
}
4.2. Gmailでメールを送信する
次に、取得したデータを使ってGmailでメールを送信する処理を追加します。今回は、スプレッドシートの情報を元に簡単なメール本文を作成し、PDFは別途添付する(または、スプレッドシートをPDF化して添付する)と仮定します。
注意: GASで請求書PDFを動的に生成するには、より複雑なコードが必要になります。ここでは、スプレッドシートをPDFとして保存し、それを添付する方法を例に挙げます。
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 recipientName = row[0];
const contactPerson = row[1];
const emailAddress = row[2];
const invoiceAmount = row[3];
const invoiceNumber = row[4];
const issueDate = row[5];
const sentStatus = row[6];
if (sentStatus === "未送信") {
// 請求書PDFを生成(スプレッドシートをPDF化)
const pdf = generateInvoicePdf(ss.getId(), sheet.getIndex());
// メール件名と本文
const subject = `${issueDate} 請求書発行のお知らせ(請求書番号: ${invoiceNumber})`;
const body = `${recipientName} 様
${contactPerson} 様
いつもお世話になっております。
下記のとおり、請求書を発行いたしましたので、ご確認ください。
請求金額: ${invoiceAmount}円
請求書番号: ${invoiceNumber}
発行日: ${issueDate}
添付ファイルをご確認ください。
よろしくお願いいたします。
[あなたの会社名]`;
// Gmailでメール送信
GmailApp.sendEmail(emailAddress, subject, body, {
attachments: [pdf]
});
// 送信済みにステータスを更新
sheet.getRange(i + 1, 7).setValue("送信済");
Logger.log(`請求書 ${invoiceNumber} を ${emailAddress} へ送信しました。`);
}
}
}
// スプレッドシートをPDFとして取得する関数
function generateInvoicePdf(spreadsheetId, sheetIndex) {
const url = `https://docs.google.com/spreadsheets/d/${spreadsheetId}/export?format=pdf&gid=${sheetIndex - 1}&portrait=true&fitw=true`;
const token = ScriptApp.getOAuthToken();
const response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + token
}
});
return response.getBlob().setName(`invoice_${invoiceNumber}.pdf`);
}
補足: generateInvoicePdf 関数は、スプレッドシートの指定したシートをPDFとして取得するものです。sheetIndex - 1 は、gid の値が0から始まるためです。また、PDFファイル名に請求書番号を含めるようにしています。
4.3. トリガーの設定
このスクリプトを定期的に実行したり、特定のイベントで実行したりするために「トリガー」を設定します。スクリプトエディタの左側にある時計アイコンをクリックし、「トリガーを追加」を選択します。
- 実行する関数を選択:
sendInvoices - 実行するデプロイを選択:
Head - イベントのソースを選択: 「時間主導型」を選択し、実行頻度(例: 毎日午前9時)を設定するのが一般的です。
5. 実行と確認
トリガーを設定したら、手動で一度実行して動作を確認しましょう。スクリプトエディタの再生ボタン(▶)をクリックし、実行します。初回実行時には、スクリプトがGoogleアカウントにアクセスするための承認を求められますので、内容を確認して承認してください。
実行後、Gmailの「送信済み」フォルダでメールが送信されているか、スプレッドシートの「送信済みフラグ」が「送信済」に更新されているかを確認します。
6. まとめ
今回は、GASとGmailを使って請求書を自動送信する方法を解説しました。このスクリプトを応用することで、さまざまな定型業務を自動化し、業務効率を大幅に向上させることができます。ぜひ、ご自身の業務に合わせてカスタマイズしてみてください。
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。