Google Apps Scriptと弁護士業務(顧問料請求書自動作成・自動メール送付)
弁護士業務において、顧問料請求書を毎月分作成し、送付するのは結構手間である。
基本的に、〇年〇月分の請求書を毎月作成し、郵便で送付するのである。
顧問契約がだんだんと増えてきて、請求書を送付する件数が増えてきて、結構手間がかかる業務になってきた。
当時、プログラミングスクール等が盛り上がっており、自分もプログラムについて少々興味を持っていた。
また、Google Apps Script(通称GAS)を使うと、いろいろなことが自動化できるとうたう書籍等もあり、この機会にちゃんと勉強して、顧問料請求書の作成等の業務を自動化してみようと思い立った。
GAS活用による業務自動化の夢にとりつかれていた自分は、GASの本を読んで勉強したり、インターネット上のGASのプログラムコードを参考にしてみたりして、猛勉強していた。
現在、自分は、Google Apps Scriptでプログラムを組んで、毎月の顧問料請求書を自動で生成し、PDFファイルにし顧問先には自動で毎月1日に送付するシステムが完成し、運用を開始している。
もっとも、すんなりできたわけではなく、それなりに大変だった。
顧問料請求書毎月自動作成プログラム作成
本を買って読んだり、インターネットで調べたりして、コードを組んでみようとした。
しかし、ゼロから作るのは、自分にとってはかなりハードルが高く、結局、エラーが続発し、かつ、修正方法もわからないという状態に陥ってしまった。
困っていると、スプレッドシートには、『マクロを記録』という機能があることを知った。
『マクロを記録』とは、スプレッドシートについて自分がやった操作を記録して、GASのプログラムコードにしてくれるものである。
マクロを記録で、いつもやっている作業を記録させた。
すると、プログラムコードがある程度出来上がった状態になる。
さらに、それを、ちょこちょこと修正することで、プログラムを実行すると、今月分の顧問料請求書ができあがる状態にすることができた。
完成コードは以下の通りである。
なお、//のコメント等を入れて後で、何をするコードなのかがわかるようにしている。
function myFunction1() {
//アクティブなスプレッドシートを選択する。これをspreadsheetと定義する。
var spreadsheet = SpreadsheetApp.getActive();
// 現在日時を取得する。これをtodayと定義する。
var today = new Date();
// Date型データを素のまま実行ログに表示する。
console.log(today);
// todayのデータを、JST、日本時間で、●年●月●日の形式に、フォーマットする。これをtodayStrと定義する。
var todayStr = Utilities.formatDate(today, 'JST', 'yyyy年M月d日');
// フォーマットした日時を実行ログに表示(ここは別に要らない)
console.log(todayStr);
//todayのデータを、日本時間で、●年●月分の形式に、フォーマットする。これをtodayStr2と定義する。
var todayStr2 = Utilities.formatDate(today, 'JST', 'yyyy年M月分');
console.log(todayStr2);
//アクティブなスプレッドシートの日付部分を取得
spreadsheet.getRange('G1:I1').activate();
//シートをコピー
spreadsheet.duplicateActiveSheet();
//日付部分を選択
spreadsheet.getRange('G1:I1').activate();
//日付部分を消す。
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
//今日の年月日を入れる(トリガーで毎月一日に指定すること!)
spreadsheet.getCurrentCell().setValue(todayStr);
//顧問料の何月分か記載する部分を選択
spreadsheet.getRange('E18').activate();
//顧問料の何月分かを記載する部分を前の記載を消去する。
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
//顧問料の●月分と入力する。
spreadsheet.getCurrentCell().setValue(todayStr2);
//スプレッドシートのシートを選択し、名前を変更●年●月分と記入。
spreadsheet.getActiveSheet().setName(todayStr2);
//スプレッドシートの位置を一番最初に移動する。
spreadsheet.moveActiveSheet(1);
};
トリガー設定
GASには、トリガー機能というのがあり、これを利用することで、プログラムを毎月1日に自動で動かすということが簡単にできる。
これによって、事務員さんは、ファイルを開いて印刷し、郵送するだけでOKとなった。
メール自動送信プログラム
上記で、毎月の請求書が自動で作成されるようになったが、さらに、印刷して郵送する手間も省きたいと思うようになった。
そこで、毎月の請求書のスプレッドシートのファイルをPDFにして、顧問先にメールで送付するプログラムを作った。
これを作成していた時期は、2024年6月から運用開始しているので、2024年5月ころである。
なお、このころは、chatGPTやGemni等が使える状態になっていたので、これを利用したプログラムコード生成に挑戦してみたが、、、
エラー続出の上に、修正指示を出しても、エラーが解消されず、結局、時間だけがかかるだけで、結局うまくいかなかった。
そのため、GASのプログラムは、親切な方がインターネットで公開されていたものを修正しつつ、メール自動送信プログラムは完成した。
まとめ
AIに書かせたコードであれ、インターネットで拾ってきたコードであれ、修正せずに一発で使えるところまでいくのは、なかなか難しいのではないかという印象である。
やはり、ある程度の基礎知識(プログラムコードが何を意味するものなのか、読めたり、わからなければ調べることができる程度)は必要で、それがあればやれることが相当拡張できると思われる。
最近、GeminiのGemsに、プログラムコードを作るのを手伝ってくれるものもあるので、もっと簡単にGASのプログラムコードを作ることができるかもしれない。
ほかの業務で自動化できそうなものが見つかれば使ってみたいと思っている。