業務自動化で脱・手作業!一人事務のDX活用術 | RPA・自動化ツール

業務自動化で脱・手作業!一人事務のDX活用ブログ|RPA・自動化ツールで業務をもっとラクに、もっとスマートに

士業・フリーランス・ECサイトの運営者必見!GASを使って簡単領収書発行

士業・フリーランス・ECサイトの運営者必見!GASを使って簡単領収書発行

請求書や領収書の発行は、手間のかかる業務の一つです。

特に、ネットショップやECサイトを運営している方は発行枚数が多く、士業やフリーランスの方は、請求書こそクラウド会計で管理できても、領収書は別対応となるケースが少なくありません。

また、紙の領収書は印紙代がかかりますが、電子化すればコスト削減が可能です。さらに、作業時間の短縮にもつながるため、オンライン化のメリットは大きいといえます。

そこで今回は、GAS(Google Apps Script)を活用し、無料で簡単に領収書を発行する方法をご紹介します。

GASを使った領収書発行

GASを実行すると、スプレッドシートの内容に基づいて宛名や金額を転記し、テンプレートを複製して保存、PDF化してメールで送信する仕組みを構築していきます。

1. Googleスプレッドシートにデータリストを記入

士業・フリーランス・ECサイトの運営者必見!GASを使って簡単領収書発行

発行日、宛名、金額、但し書き、メール送信先などの必要情報を記入します。 G列にはメールアドレスを記載し、H列には発行済みか未発行かを表示します。 スクリプトを実行すると、自動的にH列が「済」となるようになっています。

2. Googleドライブ上に領収書のテンプレートと保存用フォルダを作成

無料の領収書テンプレートはインターネット上に多数ありますので、お好きなものを選んでスプレッドシート化してください。

士業・フリーランス・ECサイトの運営者必見!GASを使って簡単領収書発行

領収書を保存するためのフォルダを、googleドライブ上に作っておきます。

士業・フリーランス・ECサイトの運営者必見!GASを使って簡単領収書発行

3. 必要なIDを調べる

スプレッドシート、テンプレート、保存用フォルダのIDを調べておきます。

対象のスプレッドシートを開き、↓の黒塗りされている部分がID部分となります。士業・フリーランス・ECサイトの運営者必見!GASを使って簡単領収書発行

士業・フリーランス・ECサイトの運営者必見!GASを使って簡単領収書発行

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がメール送信されます。

士業・フリーランス・ECサイトの運営者必見!GASを使って簡単領収書発行

士業・フリーランス・ECサイトの運営者必見!GASを使って簡単領収書発行

まとめ

GASを活用すると、手作業での領収書発行を効率化できます。 無料で使える上、カスタマイズも可能なので、業務に合わせて最適化できます。 請求書や領収書発行に時間を取られている方は、ぜひこの方法を試してみてください。

▼GAS+Googleフォームで簡単にできる在庫管理

keiridx.net

フリーランス・一人社長の方必見の経理自動化ツール選び

keiridx.net

▼ 役に立ったらブックマークお願いします!

士業・フリーランス・ECサイトの運営者必見!GASを使って簡単領収書発行

士業・フリーランス・ECサイトの運営者必見!GASを使って簡単領収書発行

人気ブログランキング

士業・フリーランス・ECサイトの運営者必見!GASを使って簡単領収書発行

現役公認会計士が解説!GASで自動化する経営管理【電子書籍】[ 稲垣 大輔 ]

価格:1980円
(2025/2/21 11:54時点)
感想(0件)

 

士業・フリーランス・ECサイトの運営者必見!GASを使って簡単領収書発行

プログラム未経験者でもOK!! 業務効率化/自動化のためのGoogle Apps Script [ 事務職たらこ ]

価格:2420円
(2025/2/21 11:56時点)
感想(0件)