GASで請求書発行を全自動化した話 — 月8時間の作業がゼロに
はじめに
毎月末に繰り返していた請求書作業——スプレッドシートから数値をコピーし、テンプレートに貼り付け、PDFに変換して送信。この一連の作業を Google Apps Script(GAS)で完全自動化 しました。
自動化した作業の全体像
- スプレッドシートから当月の請求データを取得
- Googleドキュメントのテンプレートに差し込み
- PDFに変換してGoogleドライブに保存
- 取引先へメール送信
実装のポイント
データ取得
スプレッドシートの特定シートから getValues() で一括取得し、配列として処理します。
const sheet = SpreadsheetApp.getActiveSpreadsheet()
.getSheetByName('請求データ');
const data = sheet.getDataRange().getValues();
テンプレートへの差し込み
Googleドキュメントのテンプレートをコピーし、プレースホルダーを replaceText() で置換します。
const template = DriveApp.getFileById(TEMPLATE_ID);
const copy = template.makeCopy(`請求書_${month}月_${clientName}`);
const doc = DocumentApp.openById(copy.getId());
const body = doc.getBody();
body.replaceText('{{CLIENT_NAME}}', clientName);
body.replaceText('{{AMOUNT}}', amount.toLocaleString());
doc.saveAndClose();
PDF化とメール送信
const pdf = DriveApp.getFileById(docId).getAs('application/pdf');
GmailApp.sendEmail(email, `【請求書】${month}月分`, '請求書をお送りします。', {
attachments: [pdf],
name: 'Pocket-DX'
});
結果
月8時間かかっていた作業が ゼロ になりました。月末の自動トリガーを設定することで、完全ノータッチで処理が完了します。ミスもなくなり、取引先への送付漏れも防止できています。