
GASで請求書作成を自動化!時間を有効活用して、創造的な仕事に集中しよう。
GASで請求書自動作成・Gmail送信:業務効率化の決定版
請求書作成、毎月同じ作業に時間を取られていませんか?GAS(Google Apps Script)を使えば、請求書作成からGmailでの送信までを自動化し、大幅な業務効率化が可能です。この記事では、GASを使って請求書を自動作成し、Gmailで送信するワークフローを解説します。プログラミング初心者でも理解しやすいように、ステップごとに丁寧に説明します。
この記事を読めば、請求書作成にかかる時間を大幅に短縮し、より創造的な業務に集中できるようになります。ぜひ最後までお読みいただき、GASの可能性を体感してください。
GAS環境構築と請求書テンプレート準備
まず、GASを使うための環境を構築しましょう。Googleアカウントがあればすぐに利用できます。
1. Googleスプレッドシートを開き、メニューから「ツール」→「スクリプトエディタ」を選択します。これでGASのコードエディタが開きます。
次に、請求書テンプレートを準備します。Googleドキュメントで請求書のテンプレートを作成し、必要な箇所(請求先、請求金額、日付など)にプレースホルダーを設けておきます。例えば、{{請求先}}
、{{請求金額}}
、{{日付}}
のように記述します。
請求書テンプレートをGoogleドキュメントで作成することで、デザインの自由度が高まり、企業のブランドイメージに合った請求書を作成できます。
請求書テンプレートのIDを控えておきましょう。これはGASからテンプレートを操作するために必要になります。ドキュメントのURLから取得できます。(例:https://docs.google.com/document/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/edit
の xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
の部分)
GASで請求書を自動生成するコード
GASのコードエディタに、以下のコードを記述します。このコードは、スプレッドシートの情報を読み込み、請求書テンプレートに値を埋め込み、PDFとして保存するものです。
function createInvoice() {
// スプレッドシートのIDとシート名
const spreadsheetId = 'YOUR_SPREADSHEET_ID';
const sheetName = '請求データ';
// 請求書テンプレートのID
const templateId = 'YOUR_DOCUMENT_ID';
// スプレッドシートから請求データを取得
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getSheetByName(sheetName);
const lastRow = sheet.getLastRow();
// 請求データをループ処理(2行目からデータがあると仮定)
for (let i = 2; i <= lastRow; i++) {
const customerName = sheet.getRange(i, 1).getValue(); // 顧客名
const amount = sheet.getRange(i, 2).getValue(); // 請求金額
const invoiceDate = sheet.getRange(i, 3).getValue(); // 請求日
// 請求書テンプレートをコピー
const doc = DocumentApp.openById(templateId).copy(customerName + '様_請求書');
const docId = doc.getId();
const body = doc.getBody();
// プレースホルダーを置換
body.replaceText('{{請求先}}', customerName);
body.replaceText('{{請求金額}}', amount);
body.replaceText('{{日付}}', Utilities.formatDate(invoiceDate, 'JST', 'yyyy/MM/dd'));
// ドキュメントをPDFとして保存
doc.saveAndClose();
const pdfBlob = DriveApp.getFileById(docId).getAs('application/pdf');
// PDFを保存するフォルダを指定(フォルダID)
const folderId = 'YOUR_FOLDER_ID';
const folder = DriveApp.getFolderById(folderId);
folder.createFile(pdfBlob).setName(customerName + '様_請求書.pdf');
// コピーしたドキュメントを削除(必要に応じて)
DriveApp.getFileById(docId).setTrashed(true);
}
}
上記のコードでは、以下の点を変更する必要があります。
YOUR_SPREADSHEET_ID
: 請求データが記載されたスプレッドシートのID
YOUR_DOCUMENT_ID
: 請求書テンプレートのドキュメントID
YOUR_FOLDER_ID
: PDFファイルを保存するGoogleドライブのフォルダID
また、スプレッドシートの構造に合わせて、getRange()
の引数を調整してください。上記の例では、1列目に顧客名、2列目に請求金額、3列目に請求日が記載されていることを想定しています。
このスクリプトを実行すると、スプレッドシートのデータに基づいて請求書が自動生成され、指定したGoogleドライブのフォルダにPDFファイルとして保存されます。
Gmailで請求書を自動送信するコード
次に、作成した請求書をGmailで自動送信するコードを追加します。
function sendInvoiceByEmail() {
// スプレッドシートのIDとシート名
const spreadsheetId = 'YOUR_SPREADSHEET_ID';
const sheetName = '請求データ';
// PDFが保存されているフォルダID
const folderId = 'YOUR_FOLDER_ID';
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getSheetByName(sheetName);
const lastRow = sheet.getLastRow();
// 請求データをループ処理(2行目からデータがあると仮定)
for (let i = 2; i <= lastRow; i++) {
const customerName = sheet.getRange(i, 1).getValue(); // 顧客名
const emailAddress = sheet.getRange(i, 4).getValue(); // メールアドレス
// PDFファイルを取得
const folder = DriveApp.getFolderById(folderId);
const files = folder.getFilesByName(customerName + '様_請求書.pdf');
let pdfFile;
while (files.hasNext()) {
pdfFile = files.next();
}
// メールを送信
if (pdfFile) {
const subject = customerName + '様_請求書';
const body = customerName + '様
いつもお世話になっております。
請求書をお送りいたしますので、ご確認よろしくお願いいたします。';
const attachment = pdfFile.getAs(MimeType.PDF);
GmailApp.sendEmail(emailAddress, subject, body, {
attachments: [attachment],
name: '請求書自動送信システム'
});
} else {
Logger.log(customerName + '様の請求書が見つかりませんでした。');
}
}
}
上記のコードでは、以下の点を変更する必要があります。
YOUR_SPREADSHEET_ID
: 請求データが記載されたスプレッドシートのID
YOUR_FOLDER_ID
: PDFファイルが保存されているGoogleドライブのフォルダID
また、スプレッドシートの構造に合わせて、getRange()
の引数を調整してください。上記の例では、1列目に顧客名、4列目にメールアドレスが記載されていることを想定しています。
このスクリプトを実行すると、作成された請求書PDFが、スプレッドシートに記載されたメールアドレス宛に自動送信されます。
GASの実行トリガーを設定
最後に、GASの実行トリガーを設定します。これにより、定期的に請求書作成・送信処理を自動実行できます。
1. GASのコードエディタで、メニューから「編集」→「現在のプロジェクトのトリガー」を選択します。
2. 「トリガーを追加」をクリックし、以下の設定を行います。
* 実行する関数: createInvoice
と sendInvoiceByEmail
をそれぞれ設定
* イベントのソース: 「時間主導型」
* 時間ベースのトリガーの種類: 「日単位」または「月単位」など、目的に合わせて選択
* 時間: 実行する時間帯を選択
3. 「保存」をクリックします。
これで、設定した時間になると、GASが自動的に請求書を作成し、Gmailで送信するようになります。
参考リンク
まとめ
この記事では、GASを使って請求書を自動作成し、Gmailで送信するワークフローを解説しました。GASを活用することで、請求書作成にかかる時間を大幅に短縮し、業務効率化を実現できます。ぜひ、この記事を参考に、GASを使った請求書自動化に挑戦してみてください。
最初は少し難しいかもしれませんが、一つずつステップを踏んでいけば、必ずできるようになります。頑張ってください!