【GAS】freee APIは、データを取得(GET)するだけでなく登録(POST)もできますーGASを使った口座登録の例
9/132021
カテゴリー:プログラミング
クラウド会計ソフトのfreeeはAPI(Application Programming Interface)によって外部ソフトとの連携を進めています。
今まで会計ソフトの中でしか使えなかった機能が、
他のソフトにも応用できるということで業務効率化、プラットフォーム化が期待されます。
APIの機能を使ってリクエストをサーバ側に送る方法として、大きく分けて以下の2つがあります。
- GET・・・サーバから情報を取得するときに使用します。
- POST・・・サーバへ情報を登録する時に使用します。
※この他にもサーバ側の情報を置き換える「PUT」があります
今回は、スプレッドシート(GAS)⇒freee
といった形でサーバへデータを登録(POST)することを試してみました。
APIは双方向の通信が可能ということをイメージしてもらえればと思います。
環境構築
まずは、freeeのAPIを利用できる環境構築から。
流れとしては
スプレッドシート・スクリプトエディタの作成
↓
freeeのアプリの新規追加
↓
GASとfreeeのアプリの連携
となります。
詳しくはこちらのブログで書きました。
POSTを実行するプログラムを書く
今回はお試しということで、簡単なPOSTのプログラムを書いてみました。
既存の事業所に、スプレッドシート側から口座を指定してfreeeに直接登録するというものです。
POSTリクエストのサンプルコードはこちらのページにあります。
引用:【freee API】GASを用いてGoogleスプレッドシートと連携する – freee ヘルプセンター
ENDPOINT(リクエストURL)の設定
まずはENDPOINT(リクエストURL)の設定から行います。
URLの最後に、登録したい事業所番号を追加します。
リクエストURLの最後の部分(事業所番号設定の前)はfreeeのリファレンスで確認ができます。
(今回は口座の作成POSTなので「walletables」)
なお事業所番号はfreeeを見ただけではわからないので、
freeeから取得する必要があります。
事業所番号は、サーバからデータを取得する方法(GET)で知ることができます。
(以下の例は「事業所一覧取得」というシートを作ってそちらに情報を転記させています)
function getCompanyId() {
var freeeApp = getService();
var token = freeeApp.getAccessToken();
var options =
{
“method” : “get”,
“headers” : {“Authorization” : “Bearer “+ token}};
var res = UrlFetchApp.fetch(“https://api.freee.co.jp/api/1/companies”,options);
Logger.log(res)//レスポンスのデータを配列に格納
var data = JSON.parse(res).companies;arr = [];for(var i = 0; i < data.length; i++) {var id = data[i].id;
var display_name = data[i].display_name;arr.push([id,display_name]);
}//シートに書き出す
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(‘事業所一覧取得’);
var row = arr.length;
var col = arr[0].length;
sheet.getRange(2, 1, row, col).setValues(arr);
REQUEST_BODY(登録するデータ)の設定
次に、freeeに登録(POST)するデータを設定します。
登録できるデータはリファレンスに一覧がありますので、そちらを参照します。
今回、口座ID、name(口座名)、type(口座区分)を登録してみました。
登録するデータ(パラメータ)は、次のように入力します。
このように
- リクエストURLを設定
- 登録(POST)するデータ(パラメータ)を設定
して実行すれば、
freeeへ直接データが送られます。
↓下記動画は、スプリクトを実行し、ログ表示で正常に登録されたかを確認した上で、
freeeに即新規口座(ひとり税理士共同預金)ができたのを確認しています。
まとめ
freee APIは、データを取得するだけでなく登録(POST)もできるということを、口座登録の例で紹介しました。
今回は簡単な例で実務には使えませんが、
もっと応用させれば明細、取引、振替伝票の登録など効率化できそうです。
引き続きAPIは試していきます。