【GAS×freeeAPI】GETリクエストで当日入金予定の取引一覧を取得する

こんにちは!ITライターのもり(@moripro3)です!

クラウド会計ソフトfreeeのAPIを使って経理業務を自動化するネタをお届けしています。

このシリーズでは、freeeとチャットワークを連携して「当日入金予定の取引一覧を自動でチャットワークに送信するツール」を作成します。

成果物のイメージがこちら!入金予定のある日に、取引一覧を自動でチャットワークに通知します。

freeeシリーズ2成果物イメージ

前回の記事では、freeeAPIリファレンスの機能を使って、取引一覧を取得する「リクエストURL」を作成し、URL・パラメータの仕組みを紹介しました。

【GAS×freeeAPI】指定条件の取引一覧を取得する「リクエストURL」の作り方と仕組み
【GAS×freeeAPI】「当日入金予定の取引一覧を自動でチャットワークに送信する」シリーズの第2回目。freeeAPIリファレンス機能を使って「リクエストURL」を作成する方法、および、URLとパラメータの仕組みを紹介しています。

今回の記事では、GASでfreeeAPIにアクセスして「当日入金予定の取引一覧を取得する」スクリプトを作成します。

下記の図が「ツールの全体像」と「今回作成する範囲」です。

freeeチャットワーク連携ツールの作成範囲

シリーズを通してfreeeAPIを使いこなし、経理業務の自動化を進めていきましょう!

(この記事はfreee株式会社さまとのコラボ企画です。シリーズを通して、皆さんの働くの価値を上げられるようサポートしていきます!)

スポンサーリンク

(おさらい)リクエストURL

前回の記事で、freeeAPIリファレンスの「リクエストURL生成機能」を使って、リクエストURLを作成しました。

https://api.freee.co.jp/api/1/deals?company_id=9999999&status=unsettled&type=income&start_due_date=2019-08-01&end_due_date=2019-08-01&limit=100

このリクエストURLには、取得したいデータの「条件」が含まれています。

項目名 パラメータ名
事業所ID company_id (*required) 取得対象の事業所ID
決済状況 status unsettled
収支区分 type income
支払期日(開始日) start_due_date 当日日付(yyyy-mm-dd)
支払期日(終了日) end_due_date 当日日付(yyyy-mm-dd)
取得最大件数 limit 省略した場合は20(ここでは最大値100とする)

リクエストURLは「URL(①)」と「パラメータ(②)」で構成されています。URL(①)とパラメータ(②)は ? で結合します。

①URL

https://api.freee.co.jp/api/1/deals

②パラメータ

company_id=9999999&status=unsettled&type=income&start_due_date=2019-08-01&end_due_date=2019-08-01&limit=100

パラメータは、「パラメータ名」と「値」を = で結合して「パラメータ名=値」とし、それらを & で結合します。

パラメータ名=値&パラメータ名=値& ・・・ &パラメータ名=値

スプレッドシートとfreeeAPIを連携する

GASでfreeeAPIにアクセスするためには、スプレッドシートとfreeeAPIを連携・認証する必要があります。

シリーズ初回の記事で、新規のスプレッドシートに「会計freee連携アドオン」を導入し、3つの情報を取得しました。

  • 勘定科目情報
  • 取引先情報
  • 品目情報

これらの情報は今後も使うので、シリーズを通して同じスプレッドシートを利用していきましょう。

今回の記事から、GASでfreeeAPIにアクセスしていきます。シリーズ1で連携の設定方法を紹介しているので、こちらの記事をご覧のうえ、設定してみてください。

【はじめてのfreeeAPI】GASとfreeeをつなぐ!連携認証の手順を一から紹介します
GoogleAppsScriptでクラウド会計ソフトfreeeのAPIを操作するシリーズ。GASでfreeeを操作するために必要な「freeeマイアプリの作成」と「連携」の手順を、画面キャプチャ盛りだくさんで丁寧に紹介しています。

※すでにfreeeAPIと連携済みのスプレッドシートをお持ちの方は、そのスプレッドシートに「会計freee連携アドオン」を導入する方法でもかまいません。

ここまで準備ができたら、スクリプトを書いていきましょう。

当日の日付”yyyy-mm-dd”を取得する関数

このシリーズで作成するツールでは、「当日入金予定の取引一覧」を取得します。

そのため、前回作成したリクエストURLの、パラメータ「支払期日」に「当日日付」を設定します。

  • start_due_date(支払期日・開始日) = 当日日付
  • end_due_date(支払期日・終了日) = 当日日付
https://api.freee.co.jp/api/1/deals?company_id=9999999&status=unsettled&type=income&start_due_date=当日日付&end_due_date=当日日付&limit=100

スクリプトを日次で自動実行させるので、「当日日付」=「スクリプトを実行した日付」とします。

そこで、「スクリプトを実行した日付」を取得する関数を作成します。

日付の形式は、ハイフン区切りの「yyyy-mm-dd」です。

(例)2019年8月1日 → 2019-08-01
※月・日が1桁の場合、先頭をゼロ埋めします

まず、現在の日時でDateオブジェクトを生成します。

new Date()

次に、Utilitiesライブラリを使用して、Dateオブジェクトの表示形式を変更します。
※第3引数のフォーマットは’yyyy-MM-dd’です(Mが大文字)

Utilities.formatDate(日付, タイムゾーン, フォーマット)

以上の2つの処理で「yyyy-mm-dd」形式の日付を作成できます。

var date = new Date(); //現在日時
date = Utilities.formatDate(date, 'JST', 'yyyy-MM-dd'); //表示形式を変換
Logger.log(date); //ex) 2019-08-01

これで、変数dateに「スクリプトを実行した日付」が格納されるので、リクエストURLの日付パラメータを変数dateに置き換えればOKですね。

当日入金予定の取引一覧を取得する

リクエストURL生成機能で作ったリクエストURLがこちらでした。

https://api.freee.co.jp/api/1/deals?company_id=9999999&status=unsettled&type=income&start_due_date=2019-08-01&end_due_date=2019-08-01&limit=100

パラメータの「事業所ID」と「支払期日」を変数に置き換えます。(複数事業所をお持ちの方がIDを変更しやすいよう、事業所IDも変数に持たせておきます)

パラメータの設定値をこのように変更します。

  • company_id(事業所ID) = company_id
  • start_due_date(支払期日・開始日) = date
  • end_due_date(支払期日・終了日) = date

リクエストURLの「文字列」と「変数」は + で結合します。

var company_id = '9999999'; //事業所ID
var date = new Date(); //現在日時
date = Utilities.formatDate(date, 'JST', 'yyyy-MM-dd'); //表示形式を変換

var requestUrl = 'https://api.freee.co.jp/api/1/deals?company_id=' + company_id + '&status=unsettled&type=income&start_due_date=' + date + '&end_due_date=' + date + '&limit=100';

Logger.log(requestUrl);

変数requestUrlのログ出力結果です。

https://api.freee.co.jp/api/1/deals?company_id=9999999&status=unsettled&type=income&start_due_date=2019-08-15&end_due_date=2019-08-15&limit=100

このスクリプトは2019/8/15に実行したものなので、2つのパラメータの値が当日日付「2019-08-15」になっています。

  • start_due_date=2019-08-15
  • end_due_date=2019-08-15

これで「当日入金予定の取引一覧」を取得するリクエストURLの完成です。

GETリクエストでデータを取得する

GETリクエストの基礎知識はシリーズ1で紹介しているので、はじめてfreeeAPIを操作する方はご覧になってみてください。

【はじめてのfreeeAPI】GASでリクエストを送りfreeeの事業所一覧を取得する
GoogleAppsScriptでクラウド会計ソフトfreeeのAPIを操作するシリーズ。GETリクエストでfreeeの事業所一覧を取得するコードと、freeeAPIリファレンスの読み方を紹介しています。

変数requstUrlにリクエストURLをセットして、スクリプトを実行します。

※リクエストURLは、読みやすいようにパラメータ毎に改行しています。

function getDeals() {
  
  var accessToken = getService().getAccessToken();
  
  var company_id = 'xxxxxxx'; //事業所ID
  
  var date = new Date(); //現在日時
  date = Utilities.formatDate(date, 'JST', 'yyyy-MM-dd'); //表示形式を変換
  
  //リクエストURL
  var requestUrl = 'https://api.freee.co.jp/api/1/deals?' + 
    'company_id=' + company_id + 
    '&status=unsettled' +
    '&type=income' + 
    '&start_due_date=' + date +
    '&end_due_date=' + date + 
    '&limit=100';
  
  //リクエスト送信時に付与するオプションパラメータ
  var params = {
    "method" : "get",
    "headers" : {"Authorization":"Bearer " + accessToken}
  };
  
  var response = UrlFetchApp.fetch(requestUrl,params);
  Logger.log(response);
  
}

対象データが存在する場合

freeeの取引画面で「収入」「未決済」一覧を表示してみます。支払期日2019-08-15の取引が3件あります(あらかじめデータを仕込んでいます)

スクリプトを実行して、この3件が取得できればOKです。

当日入金予定の取引一覧freeeの画面

実行結果のログ(変数responseの値)です。下記のようにJSON形式の文字列が返ってくれば成功です。

due_date:2019-08-15 の3件を取得できました。

freee支払期日が20190815の取引一覧

対象データが存在しない場合

条件に合致する取引が存在しない場合も、レスポンスが返ってきます。total_countというパラメータの値が0になっています。

freee条件に一致する取引なし

この場合、「当日入金予定の取引は無し」と判定できますね。

まとめ・次回予告

「当日入金予定の取引一覧を自動でチャットワークに送信する」シリーズの第3回目では、これらを紹介しました。

  • スクリプト実行時の「当日日付」を取得する関数の作り方
    →現在日時のDateオブジェクトを生成し、Utilitiesライブラリでフォーマット変更する(yyyy-mm-dd)
  • GETリクエストで当日入金予定の取引一覧を取得する方法
    →レスポンスとしてJSON形式の文字列を取得

次回は、freeeAPIのレスポンス(JSON形式の文字列)から、必要なデータを取り出す方法を紹介します。

【GAS×freeeAPI】APIリクエストのレスポンスから必要データのみを取り出す
「当日入金予定の取引一覧を自動でチャットワークに送信する」シリーズの第4回目。APIからのレスポンスをオブジェクトに変換して、配列が入れ子になった複雑な構造のオブジェクトから必要データのみを取得する方法を紹介しています。

連載目次:【GAS×freeeAPI】当日入金予定の取引一覧を自動でチャットワークに送信する

「クラウド会計ソフトfreee」のAPIをGASで操作して経理業務を自動化するシリーズ。「当日入金予定の取引一覧を自動でチャットワークに送信するツール」の作成を目標とします。

  1. ノンプログラミングでOK!「会計freee連携アドオン」でスプレッドシートにデータを取得する
  2. 【GAS×freeeAPI】指定条件の取引一覧を取得する「リクエストURL」の作り方と仕組み
  3. 【GAS×freeeAPI】GETリクエストで当日入金予定の取引一覧を取得する
  4. 【GAS×freeeAPI】APIリクエストのレスポンスから必要データのみを取り出す
  5. 【GAS×freeeAPI】オブジェクトからデータを取り出してスプレッドシートに書き出す
  6. 【GAS×freeeAPI】スプレッドシートのデータからチャットワーク通知用の本文を作成する
  7. 【GAS×freeeAPI】当日入金予定の取引一覧を毎日自動でチャットワークに送信する
タイトルとURLをコピーしました