入金期限を過ぎた未入金取引一覧を担当者に通知する〜会計ソフトfreeeのAPI連携〜

はじめに

会計ソフトfreee(以下、freee)は請求書発行や債権管理機能を有していますが、例えば100以上の取引先を有する事業者の場合、債権管理も一苦労ではありませんか?

業務の受注から毎月の請求書の発行、入金確認まで、一連の業務フローの中でどれかが漏れてしまうだけでも企業にとっては損害となります。

そこで、今回はヒューマンエラーが生じない仕組みの1つとして、入金期限を過ぎた未入金取引一覧を担当者に通知するシステムを制作してみます。

対象読者

・freeeのAPIを理解し、使うことができる状態のユーザー

・GoogleAppsScriptの読み書きが可能なユーザー

前提

・freeeの取引入力、もしくは請求書発行の際に期限を入力している。

・freeeのAPI認証とchatworkの認証設定を完了している。

・GoogleAppsScriptで制作し、通知先はchatworkとする。

・freeeのAPI認証済みであること。*なお、本記事でのAPI認証方法はこちらの記事のサンプルを参考に実施しており、その方法は割愛しています。

制作物のイメージ

・入金期限の過ぎた取引がある場合、その一覧を担当者に通知する。

制作物

制作コード

未入金の請求一覧を取得する

function getUnpaidInvoices(){
  var freeeApp = getService(); //合鍵を取得する1
  var accessToken = freeeApp.getAccessToken(); //合鍵を取得する2

  var requestUrl = "https://api.freee.co.jp/api/1/invoices?company_id=****************&limit=100&payment_status=unsettled"; //***にはcompany_idを入力してください
  var headers = { "Authorization" : "Bearer " + accessToken };
  var options =
   {
     "method"  : "get",
     "headers" : headers
   };
  var JSON_response = UrlFetchApp.fetch( requestUrl , options ).getContentText();
  var unpaid_invoices_data = JSON.parse( JSON_response );
  return unpaid_invoices_data.invoices;
}

未入金取引を通知する

function pushAlertUnpaidInvoiceToCompany() {
  var unpaid_invoices_data = getUnpaidInvoices();
  
  if(unpaid_invoices_data == null) {
    return;
  }
  
  var today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy-MM-dd');
  var send_or_stop = 0;
  
  var message = '【このメッセージは自動送信です】\n';
  message += '入金期限を過ぎた請求(売掛金)があります。\n\n'
  
  for(var i = 0; i < unpaid_invoices_data.length; i++) {
    if(unpaid_invoices_data[i].due_date < today ) {
      message += '取引先名:' + unpaid_invoices_data[i].partner_name + ' , ';
      message += '請求金額:' + unpaid_invoices_data[i].total_amount + ' , ';
      message += '入金期日:' + unpaid_invoices_data[i].due_date;
      message += '\n';
    } else {
      send_or_stop++
    }
  }
  
  //未入金の取引がなければ処理を終了する。ある場合は、メッセージを送信する。
  if(send_or_stop == unpaid_invoices_data.length) {
    return;
  }
  message += '\n以上';

  //送信先chatworkのroom ***にはchatworkのroomIDを入力してください。
  client.sendMessage({
    room_id: '**********',
    body: message;
  });  
}

カスタマイズ

いつ通知するのかを変更する

・入金期限から3日経過したに未入金一覧を通知する

・入金期限から1週間経過後に未入金一覧を通知する

通知方法を変更する

・Mailアドレス宛に通知する

・Slackに通知する

通知する頻度を変更する

・1回に限って通知する

・未入金である限り、定期的に通知する

通知相手を変更する

・未入金である取引先に自動的に通知する

・複数の担当者に通知する

・担当者の所属グループに通知する

通知条件を変更する

・金額が一定以上であれば通知する

・指定の取引先であれば通知する

まとめ

いかがでしたでしょうか?

今回は未入金の取引情報を通知するシステムを制作してみました。自社業務の参考になれば幸いです。