こんにちは。ITライターのもり(@moripro3)です!
「GAS」と「クラウド会計ソフトfreeeのAPI」を使った自動化の記事をお届けしています。
前回の記事では、GASでfreeeAPIを使うための作業手順を紹介しました。
こんにちは。ITライターのもり(@moripro3)です! 「GAS」と「クラウド会計ソフトfreeeのAPI」を使った自動化の記事をお届けしています。 前回の記事では、GASとfreeeAPIを使った事例を紹介しました。CSV[…]
今回の記事では、GASでfreeeAPIを操作して、取得したデータをスプレッドシートに出力する(書き込む)方法を紹介します。
freeeAPIの公式リファレンスを確認する
自分でGASを書いてfreeeAPIを操作するためには、freeeAPIの公式リファレンスを読めるようになりましょう。まずfreeeAPI公式リファレンスの「会計freee APIでできること」を確認します。
APIにアクセスするHTTPリクエストは主に4種類あります。最も簡単なのはデータを「取得」するGETです。他の3つはデータベースに更新をかけるので、気をつける必要があります。
処理 | メソッド |
---|---|
データの取得 | GET |
データの作成 | POST |
データの更新 | PUT |
データの削除 | DELETE |
GASでfreeeAPIから取得したデータをスプレッドシートに出力する
HTTPリクエストのGETメソッド(= GETリクエスト)でAPIからデータ取得できます。
この記事では、データ取得の練習として「取引先の一覧」をスプレッドシートに取得してみます。他にも、勘定科目一覧の取得・品目一覧の取得など色々なデータを取得できます。
freeeAPIにアクセスするリクエストURLの作り方
APIを使う上でポイントになるのが「リクエストURL」です。リクエストURLとは、APIにアクセスする宛先のことで、freeeAPIでは下記の3つを結合して作ります。
- ①APIエンドポイント(固定値) = https://api.freee.co.jp/
- ②個別URL = ※リファレンスで確認
- ③パラメータ = ※リファレンスで確認
①+②+③を結合した文字列が、目的となるリクエストURLです。
(例)取引先一覧の取得
- ①APIエンドポイント = https://api.freee.co.jp/
- ②個別URL = /api/1/partners
- ③パラメータ = 事業所IDのみ必須、その他は任意指定
①+②+③を結合すると、下記の文字列になります。①②と③は?で結合します。
freeeAPIリファレンスによると「取得レコードのデフォルト件数」が50件なので(51件以上の登録データがあっても最初の50件のみを取得する)、取得件数の上限を任意パラメータで設定します。ここでは100件にします。パラメータとパラメータを&で結合します。
freeeAPIからJSONデータを取得する
取引先の一覧を取得してログ出力するスクリプトです。6行目がリクエストURLです。
function getPartners() { const accessToken = getService().getAccessToken(); const company_id = "事業所IDを設定"; //事業所ID const url = `https://api.freee.co.jp/api/1/partners?company_id=${company_id}&limit=100`;//リクエストURL const params = { method: "get", headers: { 'Authorization': 'Bearer ' + accessToken } }; const response = UrlFetchApp.fetch(url, params); const obj = JSON.parse(response); console.log(obj); }
freeeAPIからのレスポンスはJSONデータで取得できます。
JSONデータをスプレッドシートに書き込む
freeeAPIからのレスポンス(JSONデータ)をスプレッドシートに書き込みます。すべてのデータを書き込むのは多すぎるので、必要なプロパティのみを書き込むようスクリプト内で指定します。どのようなプロパティがあるか、リファレンスで確認できます。
ここでは、id , name の2プロパティのみをスプレッドシートに出力します。35行目で指定しています。
function getPartners() { const accessToken = getService().getAccessToken(); const company_id = "事業所IDを設定"; //事業所ID const url = `https://api.freee.co.jp/api/1/partners?company_id=${company_id}&limit=100`;//リクエストURL const params = { method: "get", headers: { 'Authorization': 'Bearer ' + accessToken } }; const response = UrlFetchApp.fetch(url, params); const obj = JSON.parse(response); const objPartners = obj.partners; OutputSheet_(objPartners); } /** * freeeAPIから取得したJSONデータをシートに出力する * * @param {object} obj freeeAPIから取得したデータ */ function OutputSheet_(obj) { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("出力"); sheet.clear(); let arr = []; for (const i in obj) { let { id, name } = obj[i]; //スプレッドシートに出力するプロパティ arr.push([id, name]); } sheet.getRange(1, 1, arr.length, arr[0].length).setValues(arr); }
スプレッドシートへの出力結果です。
【まとめ】freeeAPIから取得したデータをスプレッドシートに出力する
この記事では、例として「取引先一覧の取得」をしました。上述スクリプトの下記2つを変更することで、他の種類のデータ取得にも流用できます。
- リクエストURL = APIエンドポイント + 個別URL + パラメータ
- 出力プロパティ = JSONデータの中から必要データのみを指定する
次回の記事では「freeeAPIを使ってスプレッドシートのデータをfreeeに登録する方法」を紹介します。
こんにちは。ITライターのもり(@moripro3)です! 「GAS」と「クラウド会計ソフトfreeeのAPI」を使った自動化の記事をお届けしています。 前回の記事では、freeeAPIから取得したデータをスプレッドシートに出力[…]