請求書や領収書の発行は、手間のかかる業務の一つです。
特に、ネットショップやECサイトを運営している方は発行枚数が多く、士業やフリーランスの方は、請求書こそクラウド会計で管理できても、領収書は別対応となるケースが少なくありません。
また、紙の領収書は印紙代がかかりますが、電子化すればコスト削減が可能です。さらに、作業時間の短縮にもつながるため、オンライン化のメリットは大きいといえます。
そこで今回は、GAS(Google Apps Script)を活用し、無料で簡単に領収書を発行する方法をご紹介します。
GASを使った領収書発行
GASを実行すると、スプレッドシートの内容に基づいて宛名や金額を転記し、テンプレートを複製して保存、PDF化してメールで送信する仕組みを構築していきます。
1. Googleスプレッドシートにデータリストを記入
発行日、宛名、金額、但し書き、メール送信先などの必要情報を記入します。 G列にはメールアドレスを記載し、H列には発行済みか未発行かを表示します。 スクリプトを実行すると、自動的にH列が「済」となるようになっています。
2. Googleドライブ上に領収書のテンプレートと保存用フォルダを作成
無料の領収書テンプレートはインターネット上に多数ありますので、お好きなものを選んでスプレッドシート化してください。
領収書を保存するためのフォルダを、googleドライブ上に作っておきます。
3. 必要なIDを調べる
スプレッドシート、テンプレート、保存用フォルダのIDを調べておきます。
対象のスプレッドシートを開き、↓の黒塗りされている部分がID部分となります。
4. GASコードを記述
スプレッドシートの「拡張機能」→「Apps Script」から、以下のコードを記入します。
修正箇所
-
データリストIDは、作成したスプレッドシートのIDに置き換えてください。
-
テンプレートIDは、テンプレートのスプレッドシートのIDに置き換えてください。
-
PDF保存フォルダIDは、Googleドライブの保存フォルダのIDに置き換えてください。
-
データリストのシート名も適宜変更してください。
function generateReceipts() {
const sourceSheetId = "*************************"; // データリストID
const templateSheetId = "*************************"; // テンプレートID
const sourceSheetName = "*************************"; // データリストのシート名
const sourceSS = SpreadsheetApp.openById(sourceSheetId);
const sourceSheet = sourceSS.getSheetByName(sourceSheetName);
const data = sourceSheet.getDataRange().getValues();
const templateSS = SpreadsheetApp.openById(templateSheetId);
const templateSheet = templateSS.getSheets()[0];
const folder = DriveApp.getFolderById("*************************"); // PDF保存フォルダ
for (let i = 1; i < data.length; i++) {
const [date, name, amount, details, taxExcluded, tax, email, status] = data[i];
if (!email || status === "済") continue;
const newSheet = templateSheet.copyTo(templateSS);
newSheet.setName("Receipt_" + (i + 1));
newSheet.getRange("H1").setValue(date); // 発行日
newSheet.getRange("B2").setValue(name); // 宛名
newSheet.getRange("C4").setValue(amount); // 金額
newSheet.getRange("D6").setValue(details); // 但し書き
newSheet.getRange("C10").setValue(taxExcluded); // 税抜
newSheet.getRange("C11").setValue(tax); // 税
SpreadsheetApp.flush();
const pdfBlob = convertSheetToPDF(templateSS, newSheet.getSheetId());
const pdfFile = folder.createFile(pdfBlob).setName("領収書_" + name + ".pdf");
// PDFのURLを取得
const pdfUrl = pdfFile.getUrl();
MailApp.sendEmail({
to: email,
subject: "領収書の送付",
body: `領収書を添付しております。\n\nまた、以下のURLからもダウンロードできます。\n${pdfUrl}`,
attachments: [pdfFile]
});
sourceSheet.getRange(i + 1, 8).setValue("済");
templateSS.deleteSheet(newSheet);
}
}
function convertSheetToPDF(ss, sheetId) {
const url = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/export?format=pdf&gid=" + sheetId;
const params = {
method: "get",
headers: { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
muteHttpExceptions: true
};
return UrlFetchApp.fetch(url, params).getBlob();
}
5. 実行する
GASスクリプトを実行すると、スプレッドシートのH列が「済」となり、領収書のPDFがメール送信されます。
まとめ
GASを活用すると、手作業での領収書発行を効率化できます。 無料で使える上、カスタマイズも可能なので、業務に合わせて最適化できます。 請求書や領収書発行に時間を取られている方は、ぜひこの方法を試してみてください。
▼GAS+Googleフォームで簡単にできる在庫管理
▼ 役に立ったらブックマークお願いします!
![]() |
現役公認会計士が解説!GASで自動化する経営管理【電子書籍】[ 稲垣 大輔 ] 価格:1980円 |
![]() |
プログラム未経験者でもOK!! 業務効率化/自動化のためのGoogle Apps Script [ 事務職たらこ ] 価格:2420円 |