【GAS】Google Apps Scriptでマネーフォワードクラウドの請求書を毎月自動発行【⑤自動化篇】
【追記】
この記事のプログラムは2022年時点でのMFクラウド請求書API(v2)を使用しています。
2023年9月30日でv2の提供終了が発表されました。
連載記事を全てお読みいただいた後に、
以下の記事を参考にv3への移行をお願いいたします。
大変お待たせいたしました~!(暫く体調を崩しておりました;;)
今回も、前回に引き続き、GASとマネーフォワードクラウドの連携をやっていきます!
これまでの記事『Google Apps Scriptでマネーフォワードクラウドの請求書を毎月自動発行』はこちら↓
このシリーズも、今回で最終回です!
請求書を毎月1日に自動発行するようにする手順を紹介します!
これができれば、後は自動でできた請求書をメールで送るだけ!
忙しい月初を少しでも楽にするために頑張っていきましょう!
日付の計算について
前回は日付(請求日、支払期限、売上計上日)を直接入力していましたが、
請求書を毎月自動発行するには、自動で日付が入るようにしたいです。
プログラムを書く前に、まずはタイムゾーンが正しく設定されているかを確認しましょう!
確認方法は、第2回の記事を参照してくださいね。
タイムゾーンが正しく設定できたら、プログラムで日付を自動計算してみましょう。
今回は下記の通り設定します。
- 請求日(billing_date):当日
- 支払期限(due_date):当月末日
- 売上計上日(sales_date):前月末日
// 日付をyyyy-MM-dd形式で渡すための変換用関数
function getDateStr_(date) {
// 月のみ1月が0になるので1加算
return date.getFullYear() + '-' + ('00' + (date.getMonth() + 1)).slice(-2) + '-' +
("00" + date.getDate()).slice(-2);
}
// 前略
billing_date: getDateStr_(new Date()),
due_date: getDateStr_((date => {
// dateを1ヶ月後の日付に変更
date.setMonth(date.getMonth() + 1);
// date.setDate(0)で1ヶ月前の末日=当月末日に変更
date.setDate(0);
return date;
})(new Date())),
sales_date: getDateStr_((date => {
// date.setDate(0)で1ヶ月前の末日に変更
date.setDate(0);
return date;
})(new Date())),
// 後略
日付はyyyy-MM-dd形式で渡す必要がある(APIドキュメント参照)ので、
このように変換用関数を用意してあげると便利です!
もし請求書番号(billing_number)にも日付を入れたい場合は、この変換用関数を更に改造し、
年月に応じた請求書番号も取得できるようにできれば更に良いですね!
Dateオブジェクトの設定では、「setDate(0)」で前月末日日付にできることがポイントですね。
GASの自動実行設定
ここまでできたら、後はGASのプログラムを毎月1日に自動実行されるよう設定するだけです!
GASの左側のメニュー(新エディタの場合)から「トリガー」をクリックしてください。
※クラシックエディタの場合は「編集」→「現在のプロジェクトのトリガー」
トリガー画面が開いたら、右下の「トリガーを追加」ボタンをクリックします。
下記の通り設定します。
- 実行する関数を選択:start
- 前回作成した、認証用関数と請求書作成関数を呼び出している関数
- イベントのソースを選択:時間主導型
- 時間ベースのトリガーのタイプを選択:月ベースのタイマー
- 日を選択:1日
- 毎月何日に実行したいかを指定
- 時刻を選択:(何時に実行したいかを自由に指定)
- エラー通知設定(右側):今すぐ通知を受け取る
設定できたら、右下の「保存」ボタンをクリックして完了です!
実行予定日時に正しく請求書が作成されていることを楽しみに待ちましょう!
終わりに(お知らせがあります!)
初めての長期間連載、最後までお読みいただきありがとうございました!
マネーフォワードクラウドを利用されている個人事業主・フリーランスの方も多いと思うので、
少しでも参考になれば幸いです!
ちょっとしたお知らせ
マシュマロは匿名メッセージを受け付けることができるサービスです。
こちらにて匿名で簡単なご質問やブログ記事のご感想、
ブログに書いてほしいネタ等を随時募集しております!
※必ずしも全て反映できるとは限りませんので予めご了承ください
ブログにもQRコードを貼っておきますので、どしどしお待ちしております~!