GASとGmailで請求書を自動送信!初心者でも簡単
/ 初心者向け
GASとGmailで請求書を自動送信!業務効率を劇的に改善
日々の業務で請求書作成・送付に追われている皆様、お疲れ様です!「もっと効率化したい…」そんな悩みを抱えていませんか?
実は、Google Apps Script(GAS)とGmailを組み合わせることで、請求書の自動送信が驚くほど簡単に実現できます。この記事では、GAS初心者の方でも理解できるように、具体的な手順をステップバイステップで解説します。
請求書自動送信のメリット
まずは、請求書を自動送信することのメリットを整理しておきましょう。
- 時間の大幅な節約: 手作業による作成・送付の手間が省けます。
- ヒューマンエラーの削減: 入力ミスや送信漏れを防ぎます。
- 顧客満足度の向上: 迅速かつ正確な対応は、顧客からの信頼につながります。
- コア業務への集中: 定型業務から解放され、より付加価値の高い業務に集中できます。
準備するもの
この自動化を実現するために、以下のものを用意しましょう。
- Googleアカウント: Gmailを利用するため必須です。
- Google スプレッドシート (または Excel): 請求書データ(顧客名、金額、期日など)を管理します。
- GASが動作する環境: ブラウザがあればOKです。
ステップ1:請求書データをGoogleスプレッドシートで管理
まずは、請求書に必要な情報をGoogleスプレッドシートで一覧化します。以下のような項目があると便利です。
- 顧客名
- メールアドレス
- 請求金額
- 請求日
- 支払期日
- 請求書番号(ユニークな番号を振ると管理が楽です)
例:
| 顧客名 | メールアドレス | 請求金額 | 請求日 | 支払期日 | 請求書番号 | 状態 |
| :------ | :------------------- | :------- | :------- | :------- | :------- | :----- |
| A社 | a.company@example.com | 10000 | 2023/10/27 | 2023/11/10 | INV001 | 未送信 |
| B社 | b.company@example.com | 25000 | 2023/10/27 | 2023/11/15 | INV002 | 未送信 |
「状態」列は、GASが処理したかどうかを記録するために使用します。今回は「未送信」のものを処理対象とします。
ステップ2:請求書テンプレートの準備
GASでメールを作成する際に、毎回件名や本文を記述するのは大変です。ここでは、請求書のテンプレートとなるメール文面をGASのスクリプトエディタ内に直接記述する方法を説明します。
ステップ3:GASスクリプトの作成
いよいよGASのスクリプトを作成します。
1. スクリプトエディタを開く: Googleスプレッドシートを開き、「拡張機能」>「Apps Script」を選択します。
2. スクリプトの記述: 以下のサンプルコードを参考に、ご自身の環境に合わせて編集してください。
function sendInvoiceEmails() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("請求書データ"); // シート名を指定
var dataRange = sheet.getDataRange();
var values = dataRange.getValues();
// ヘッダー行をスキップ
var header = values.shift();
for (var i = 0; i < values.length; i++) {
var row = values[i];
var customerName = row[0]; // A列: 顧客名
var emailAddress = row[1]; // B列: メールアドレス
var amount = row[2]; // C列: 請求金額
var dueDate = row[4]; // E列: 支払期日
var invoiceNumber = row[5]; // F列: 請求書番号
var status = row[6]; // G列: 状態
// 「未送信」のものだけ処理
if (status === "未送信") {
// メール件名
var subject = "【" + customerName + "】" + invoiceNumber + "のご請求について";
// メール本文
var body = customerName + " 様
"
+ "いつもお世話になっております。
"
+ "下記のとおり、請求書を発行いたしましたのでご確認をお願いいたします。
"
+ "請求書番号:" + invoiceNumber + "
"
+ "請求金額:" + amount + " 円
"
+ "お支払期日:" + Utilities.formatDate(new Date(dueDate), "JST", "yyyy/MM/dd") + "
"
+ "ご不明な点がございましたら、お気軽にお問い合わせください。
"
+ "[あなたの会社名/氏名]";
// Gmailでメールを送信
GmailApp.sendEmail(emailAddress, subject, body);
// 状態を「送信済」に更新
sheet.getRange(i + 2, 7).setValue("送信済"); // i+2は行番号、7はG列
SpreadsheetApp.flush(); // 変更を即時反映
Logger.log(invoiceNumber + " を " + emailAddress + " に送信しました。");
}
}
}
コードの解説:
getSheetByName("請求書データ"): 請求書データが入力されているシート名を指定します。getDataRange().getValues(): シートの全データを二次元配列として取得します。values.shift(): ヘッダー行を配列から削除します。row[0]など: 各列のデータを取得します。配列のインデックスは0から始まります。Utilities.formatDate(): 日付のフォーマットを調整します。GmailApp.sendEmail(): Gmailでメールを送信する関数です。sheet.getRange(i + 2, 7).setValue("送信済"): 処理済みの請求書のステータスを「送信済」に更新します。
ステップ4:トリガーの設定(自動実行)
このスクリプトを毎日決まった時間に自動実行させるために、トリガーを設定します。
1. スクリプトエディタの左側にある時計アイコン(トリガー)をクリックします。
2. 「トリガーを追加」ボタンをクリックします。
3. 以下の設定を行います。
- 実行する関数を選択:
sendInvoiceEmails - 実行するデプロイを選択:
Head - イベントのソースを選択:
時間駆動 - 時間の間隔の種類を選択:
毎日のタイマー(またはお好みの間隔) - 時刻の範囲を選択:
深夜 0 時 ~ 1 時(または指定したい時間)
4. 「保存」をクリックし、実行に必要な承認を行います。
まとめ
いかがでしたでしょうか?GASとGmailを使えば、請求書の自動送信が驚くほど簡単に実現できます。今回ご紹介した基本的なスクリプトをベースに、添付ファイル機能を追加したり、より詳細な条件分岐を加えたりと、さらにカスタマイズしていくことも可能です。
ぜひ、この自動化を取り入れて、日々の業務を効率化し、よりクリエイティブな業務に時間を充ててください!
ご不明な点がありましたら、お気軽にコメントでご質問ください。
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。