見出し画像

【定例作業にサヨナラ】毎月自動で請求書を作成して関係者に送信する方法

「請求書を自動で作成したい!」
「関係者に毎月自動で請求書を送信したい!」
「そもそもスプレッドシートのデータを自動でドキュメント化したい!!」

本記事ではこのような方を対象に、GAS(Google App Script)を使ってスプレッドシートのデータから毎月自動で請求書を作成して関係者に送信する方法をご紹介します。

■本記事で分かること
GASを使ってスプレッドシートのデータから毎月自動で請求書を作成して関係者に送信する方法

■本記事の信頼性
私は、本業でChatGPTなどのAIツールを活用して効率化を実現し、ほぼ毎日定時で帰宅。家族との充実した時間を確保している「なおき」といいます。

AIと全く無縁の体育系で文系出身(数学Ⅱで終わりました)の私でもできる時短術をわかりやすく説明できるよう、Xなどを活用して情報発信しています。

この記事を読んでくださった方々が1分でも早く帰れることを願い、今回はGASを使ってスプレッドシートのデータから毎月自動で請求書を作成して関係者に送信する方法をご紹介します!

1.Googleスプレッドシートの準備


まずは、Googleスプレッドシートで請求書に必要な顧客情報を作成します。

顧客情報を作成

顧客情報の「請求額」の部分は単純化していますが、それぞれの顧客に応じた請求額になるようにご自身のデータはカスタマイズしてください。

今回は4列目の「鈴木次郎」の部分に私のメールアドレスを入れてみました。

2.Googleドキュメントの準備

次に、スプレッドシートのデータをメールの文章に置き換えるテンプレートとなるGoogleドキュメントを作成します。

ドキュメントでテンプレートを作成

今回は、お客様名と請求金額という単純な内容にしてみました。

この中に記載のある
{{CustomerName}}
{{InvoiceAmount}}
の2つはプレースホルダーの役割を果たすように「{{テキスト}}」で囲うようにしてください。

プレースホルダーは、スプレッドシート内にある「顧客の名前」と「請求額」の部分を「お客様名」と「請求金額」に置き換える役割を果たしてくれますので、確実に記述してください。

2.GAS(Google App Script)の設定と実行

それでは次にGASの設定に入っていきます。

ステップ1:Apps Scriptを開く

Googleスプレッドシートのメニューバーから
「拡張機能」→「Apps Script」を選択します。

ステップ2:コードの入力

Apps Scriptが開いたら、デフォルトで入力されている部分のコードを削除してください。

赤枠内を削除

同じところに以下のコードをコピペします。

function sendInvoices() {
  // スプレッドシートのIDとドキュメントのテンプレートIDを設定
  var spreadsheetId = 'YOUR_SPREADSHEET_ID'; // スプレッドシートのIDをここに設定
  var templateId = 'YOUR_TEMPLATE_ID'; // ドキュメントテンプレートのIDをここに設定
  
  // スプレッドシートからデータを取得
  var sheet = SpreadsheetApp.openById(spreadsheetId).getActiveSheet();
  var data = sheet.getDataRange().getValues(); // 全データを読み込む
  
  // ヘッダー行をスキップしてデータ処理
  for (var i = 1; i < data.length; i++) {
    var row = data[i];
    var email = row[0]; // A列: 顧客のメールアドレス
    var customerName = row[1]; // B列: 顧客の名前
    var invoiceAmount = row[2]; // C列: 請求額
    
    // テンプレートドキュメントをコピーして顧客情報で置換
    var documentCopyId = DriveApp.getFileById(templateId).makeCopy().getId();
    var documentCopy = DocumentApp.openById(documentCopyId);
    var body = documentCopy.getBody();
    
    body.replaceText('{{CustomerName}}', customerName);
    body.replaceText('{{InvoiceAmount}}', invoiceAmount.toString());
    
    documentCopy.saveAndClose(); // 変更を保存
    
    // ドキュメントの内容をメール本文として取得
    var content = DocumentApp.openById(documentCopyId).getBody().getText();
    
    // 顧客にメール送信
    MailApp.sendEmail(email, '請求書', content);
    
    // 一時的に作成したドキュメントを削除
    DriveApp.getFileById(documentCopyId).setTrashed(true);
  }
}

このコードは、
指定されたスプレッドシートからデータを取得
②取得したデータをGoogleドキュメントのテンプレートに置換
③顧客ごとにメールを送信
するためのコードです。

実行する前に以下の部分を書き換えて下さい👇

  // スプレッドシートのIDとドキュメントのテンプレートIDを設定
  var spreadsheetId = 'YOUR_SPREADSHEET_ID'; // スプレッドシートのIDをここに設定
  var templateId = 'YOUR_TEMPLATE_ID'; // ドキュメントテンプレートのIDをここに設定

スプレッドシートとドキュメントのIDは以下のように各URLに含まれています。

https://docs.google.com/spreadsheets/d/この部分/edit#gid=0

実際にコピペしたコードは以下のようになります。
修正後は必ず保存マーク💾を押してください。

ステップ3:実行及び権限の承認

保存出来たら、「▷実行」の部分をクリックして関数sendInvoicesを実行します。

実行すると権限の承認を求められるので、以下の画像の赤枠部分をクリックしていってください。

許可をクリック

これだけでもうメールが届きます。

実際に届いたメール

事前に自分のメールアドレスを設定していた「鈴木次郎」宛に届いていることが分かりますね!

では最後に、このメールが毎月1日に送信されるようにトリガーを設定していきます。

Apps Scriptの左側のメニューから⏱マークを選択します。

トリガー設定画面

次に、画面右下の「トリガーを追加」をクリックして以下のように設定して保存します。

  • イベントソース:時間主導型

  • トリガータイプ:月ベースのタイマー

  • 日を選択:1日

  • 時刻を選択:適宜の時間

トリガー設定画面

保存後は以下のようになります。

時間ベースのトリガーが設定されました!

以上で作業は終わりです!
お疲れ様でした!

4.まとめ

今回は、「GASを使ってスプレッドシートのデータから毎月自動で請求書を作成して関係者に送信する方法」をテーマに紹介しましたが、いかがだったでしょうか?

  1. Googleスプレッドシートで請求書を準備

  2. Googleドキュメントでテンプレートを作成

  3. GAS(Google App Script)コードとトリガーの設定

  4. GASの実行

上記の内容が実行できれば、スプレッドシートのデータから毎月自動で請求書を作成して関係者に送信できるようになります!

「そうは言っても…請求書をメール文で直接送ることってないよね?」
「PDF形式で請求書を送信できるようにしたい。」

…と思ったそこのアナタ!

GASコードをカスタマイズすればPDF形式に変換して送信できるようになります!

実際に作ってみたのがコチラ👇

PDFがメールで届いた様子
PDFの中身

このように、実際の業務やご自身の好みに合わせたカスタマイズができれば、かなり効率的な作業につなげることができるので、是非実践してみて下さい!

「自分でカスタマイズする方法が分からない…」
「そもそもGASコードなんて読めへんわ!」
「簡単にできる方法を教えて!」

そんな方のために、自分に合ったGASコードを作成するためのChatGPTプロンプト集を作成しました!

実際、このプロンプト集を使えば請求書をPDFにして送信するGASコードがすぐに作成できますので是非使用してみて下さい!

今回紹介した内容で皆さんの業務が少しでも効率化できれば、スキ、SNSでの紹介をしていただけると大変励みになりますので、何卒よろしくお願いします!

このほか、AI×時短術の知識をX(旧Twitter)で紹介していますので、是非フォローしてください!


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?