GAS

GASからfreeeAPIを操作する覚書

GASでfreee APIを使う機会があったのだけど、色々と事前準備が面倒だったので設定手順をメモしておく

freeeマイアプリを作成

アプリストアへのアクセスと事業所選択

freeeにログイン済みの状態で、freeeアプリストアの開発者ページにアクセス。

1つのfreeeアカウントで複数の事業所を管理している場合は、画面右上の事業所を確認。

※事業所を切り替える場合は、右上の事業所名をクリックすると選択できる

マイアプリの作成と基本情報登録

画面右上の「アプリ管理」→「開発アプリ一覧」右上の「+新規追加」をクリック。

「新しいアプリの作成」画面にて、基本情報を入力して登録する(アプリ名と概要の文言は後から変更できるので、適当でOK)

コールバックURLの登録

「コールバックURL」の項目に初期値がセットされているので、値を下記のURLで上書きして保存する。

https://script.google.com/macros/d/スクリプトID/usercallback

スクリプトIDは使用するGASの設定から確認できる

 GAS側の設定

OAuth2ライブラリの登録

下記プロジェクトキーで「OAuth2 for Apps Script」ライブラリを追加する

1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF

認証用のGASコード

CLIENT_IDCLIENT_SECRETはマイアプリの基本情報にあるものを設定する

//連携アプリ情報
var CLIENT_ID = 'CLIENT_ID';
var CLIENT_SECRET = 'CLIENT_SECRET';

function Auth() {

  //freeeAPIのサービスを取得
  var service = getService();

  //スクリプトへのアクセスを許可する認証URLを取得
  var authUrl = service.getAuthorizationUrl();

  Logger.log(authUrl);//取得した認証用URLをログ出力

}

//freeeAPIのサービスを取得する関数
function getService() {
  return OAuth2.createService('freee')
      .setAuthorizationBaseUrl('https://accounts.secure.freee.co.jp/public_api/authorize')
      .setTokenUrl('https://accounts.secure.freee.co.jp/public_api/token')
      .setClientId(CLIENT_ID)
      .setClientSecret(CLIENT_SECRET)
      .setCallbackFunction('authCallback')
      .setPropertyStore(PropertiesService.getUserProperties())
}

//認証コールバック関数
function authCallback(request) {
  Logger.log(request);
  var service = getService();
  var isAuthorized = service.handleCallback(request);
  if (isAuthorized) {
    return HtmlService.createHtmlOutput('認証に成功しました。タブを閉じてください。');
  } else {
    return HtmlService.createHtmlOutput('認証に失敗しました。');
  };
}

認証URLにアクセスする

alertAuth関数を実行してログに出力された認証URLをコピー。
ブラウザのURL欄に貼り付けてアクセスする。

認証画面が出てくるので「許可する」をクリック。

成功メッセージが出れば認証作業が完了。

実際にデータを取ってみる

事業所の一覧を取得する場合はこんな感じ

function getCompanies() {
  //freeeAPIのサービスからアクセストークンを取得
  var accessToken = getService().getAccessToken();

  //リクエストを送る時に付与するパラメータ
  var params = {
    "method" : "get",
    "headers" : {"Authorization":"Bearer " + accessToken}
  };

  //事業所一覧を取得するためのリクエストURL
  var requestUrl = 'https://api.freee.co.jp/api/1/companies';
  var response = UrlFetchApp.fetch(requestUrl, params);

  Logger.log(response);
}

取得したいデータや操作によってURLや渡すパラメータが変わる。
出来ることと操作方法は全部ここに載ってる→会計APIリファレンス(公式ドキュメント)

ABOUT ME
ytakeuchi
都内在住のフロントエンドエンジニア。2016年からフリーランスとして活動中。座右の銘は「昨日よりも楽に」。好きな言葉は「効率化」。こんな性格なのでプライベートではGoogle Apps Scriptばかり触っています。