前回、請求書データを活用して、顧客との関係構築に活かすことをお伝えしました。
でも実際に請求書データをエクセル一覧にするのは、どうすれば良いのでしょうか?
この記事では、クラウド会計freeeで請求書を発行している場合の事例をご紹介します。
<スポンサードリンク>
Contents
請求書はまとめて管理できるように
この記事では例として、クラウド会計「freee」で請求書を発行している場合を想定します。
中小企業の場合、エクセルで1枚ずつ請求書を発行している場合も良く見かけます。
しかし、この方法はお勧めできません。
- データを活用には、Excel VBAなどを使って、散らばったデータをまとめる必要がある
- 状態管理(下書き・発行済み・送付済み、入金待ち・入金済み・催促中etc)が管理しにくい
- 案件管理・販売管理などの他ツールとの連携がしにくい
特に2点目が経理の視点から見て致命的です。
また業務効率や事故防止の視点から見ると、3点目も厳しいです。
できる限り専用ツールを使って、他の業務と連携できるようにしておきましょう。
今回ご紹介する「freee」は請求書の状態管理も、業務ツールとの連携もできます。
GAS x freee で請求書を一括ダウンロード
クラウド会計freeeにて、請求書を一括ダウンロードできれば良いのですが、残念ながら標準機能ではサポートされていません。
PDFでまとめて出力できるだけですから、データ活用には向いていません。
そこでGAS(Google Apps Script)を使って、freee APIにアクセスして、請求書を一括でダウンロードしてみます。
- GASは既にV8ランタイムをサポートしています
- この記事は、その前のRhinoランタイム時代の構文で書いています
- GASの使い方など、基本的なことは、この記事では割愛しています
全体の流れ
コードをご紹介する前に全体の流れをお伝えしておきます。
- 会計freeeのAPIを利用できるようにする(認証)
- freee APIにて請求書データを取得
- そのデータから必要な項目(日付・取引先・金額)を抜き出す
- スプレッドシートに貼り付け
以下、具体的にご紹介していきます。
まずはfreeeの認証が必要
その前にGASでfreeeにアクセスできるようにしなければなりません。
会計ソフトですから、誰にでもデータにアクセスされたら困ります。
そのためにfreeeにログインするとき同様、認証しないといけないのです。
やり方はこちらのブログの手順通りにやれば大丈夫です。
私もこの記事を、まんま真似させていただきました。
https://tonari-it.com/gas-freee-api-auth/
APIって何?というような方も、目を通していただくと良いでしょう。
freee APIにて請求書データを取得
認証を終えたら、早速、freee APIにて請求書データを取得します。
freeeのリファレンスを見ると、こちらに情報があります。
請求書一覧を取得するには、最低限、「事業所ID(company_id)」が必要と書いてあります。
事前に調べておきました。
ではコードをご紹介していきましょう。
スプレッドシートのコンテナバインドスクリプトを使っています。
- function getInvoices(){
- var accessToken = getService().getAccessToken();
- var company_id = “XXXXXX”;
- var startDate = ‘2019-01-01’;
- var endDate = ‘2019-12-31’;
- //省略
- }
3行目で事業所ID(company_id)を定義しています。
実際にデータを活用するときには、期間を指定して利用します。
この例では、請求書の発行日(~売上計上日)の開始日を2019年1月1日、終了日を2019年12月31日としています。
- var invoiceUrl = ‘https://api.freee.co.jp/api/1/invoices?’ +
- ‘company_id=’ + company_id +
- ‘&issue_date_start=’ + startDate +
- ‘&issue_date_end=’ + endDate +
- ‘&invoice_status=issued’ +
- ‘&payment_status=settled’ +
- ‘&limit=100’;
- var headers = {“Authorization” : “Bearer “ + accessToken };
- var options ={
- “method” : “get”,
- “headers” : headers,
- };
- var res = UrlFetchApp.fetch(invoiceUrl, options).getContentText();
1行目でfreee APIの請求書一覧を取得するためのURLを定義しています。
このURLの中に、2~7行目として、パラメータを付与しています。
- 事業所ID
- 開始日
- 終了日
- 請求書のステータス(発行済み)
- 入金ステータス(入金済み)
- 上限数(100 ※freee APIの仕様で上限が100になっています)
過去のお客様との取引を元にデータ活用したいので、請求書と入金のステータスも指定しておきます。
13行目でfreee APIにアクセスして、取得したデータ(HTTPレスポンス)を変数resに格納しています。ここまででAPIの出番は終わりです。
JSONからスプレッドシートに貼り付けまで
あとはGASだけで頑張ります。
- var parsedRes = JSON.parse(res);
- var data = parsedRes.invoices;
- var issueDate = [];
- var partnerName = [];
- var subTotal = [];
- for (var i = 0; i < data.length; i++) {
- issueDate.push([data[i].issue_date]);
- partnerName.push([data[i].partner_long_name]);
- subTotal.push([data[i].sub_total]);
- }
1行目で、HTTPレスポンス(文字列)をオブジェクトにします。【変数:parsedRes】
2行目で、オブジェクトのうち、請求書に該当するところだけを抜き出します。【変数:data】
(そのままだと、自社の情報などが含まれてしまうので、余計なところをなくす)
この時点でも、変数dataには、非常に様々なデータが含まれています。
請求書番号、明細、コメントとか、請求書に含まれる情報全てが含まれているからです。
この中からデータ活用に必要なところは
- 日付(issue_date)
- 取引先(partner_long_name)
- 金額(sub_total)
だけです。
厳密には金額は今回は使いませんが、色んな用途に使えるので、ついでに抽出しておきます。
それぞれに該当する空っぽの配列を準備しておきます(4~6行目)。
その空の配列に、請求書の枚数分だけ繰り返し処理(for文)を行います。(8~12行目)
上記3つの要素だけを取り出して、pushメソッドを使い、空っぽの配列に追加していきます。(9~11行目)
- var ss = SpreadsheetApp.getActiveSpreadsheet();
- var sheet = ss.getSheetByName(‘invoices’);
- sheet.getRange(2, 1, issueDate.length, 1).setValues(issueDate);
- sheet.getRange(2, 2, partnerName.length, 1).setValues(partnerName);
- sheet.getRange(2, 3, subTotal.length, 1).setValues(subTotal);
あとはスプレッドシートに貼り付けます。
「invoices」という名前のシートを事前につくり、
- A1セル:売上計上日
- B1セル:取引先
- C1セル:金額
としておきます。
4~6行目で、スプレッドシートの2行目以降にデータを貼り付けているのは、1行目を使っているからです。(赤文字のところ)
このコードを実行してみると、スプレッドシートにデータが貼り付けされます。
この後は、スプレッドシート上で加工して、取引が途絶えている顧客を抽出します。
その具体的なやり方は、こちらの記事です。
ここまでGAS上でやってしまうのもありですね。
(今後の課題・・汗)
また、CSVでダウンロードして、別の用途に活用することもできます。
(例:顧客別の売上を確認する)
このようにGASとfreee APIを組み合わせると、freeeの標準機能だけでは取得できないデータも取得できます。freeeのレポート機能だけで不足するときには、参考にしてみて下さい。
- GASでfreeeのデータを一括ダウンロードできる(例:請求書)
- ダウンロードしてからのデータ加工はGASで行う
- データ集計までは自動化して、手を打つ方に時間を使う
[the_ad id=”2141″]
【編集後記】
最近、結構な時間をGASに使っています。
パズルを解くみたいで、少しずつハマっている気がします。
メルマガ『経営は100種競技!』を毎日配信しています。
マーケティングやITを身につけたい。
ビジネスを楽しみたい。
変化・成長したいというビジネスパーソンにお読みいただいています。