GASでfreee APIを使う機会があったのだけど、色々と事前準備が面倒だったので設定手順をメモしておく
Contents
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_ID
とCLIENT_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リファレンス(公式ドキュメント)