タダケンのEnjoy Tech

楽しみながらラクに成果を上げる仕組みを考える

Google Apps Scriptでfreee APIのアクセストークンを取得する

f:id:tadaken3:20180325120255p:plain

こんにちは!
タダケン(@tadaken3)です。

前回はクラウド会計ソフトfreeeの概要とプログラマにfreeeをオススメする理由をご説明しました。 freeeはクラウド会計ソフトの中でもっともAPIが充実しているのがオススメの理由でした。

tadaken3.hatenablog.jp

今回は実際に、Google Apps ScriptでfreeeのAPIを利用する方法をお伝えします。今回は最初の一歩としてAPIを操作するために必要なアクセストークンの取得方法を解説します。

freeeのAPIを利用するには、法人プランの場合、ライト、ビジネス、エンタープライズ。個人プランの場合はスターター、スタンダード、プレミアムのいずれかを利用している必要があります。

freeeのAPIを利用するには

freeeのAPIはOAuth2.0というプロトコルに対応しています。オーオースと読みます。GoogleスプレッドシートからfreeeのAPIを利用するには、Google Apps Scriptを利用します。Google Apps ScriptでOAuth2.0の形式にのっとって、アクセストークンの発行を行ないます。

本記事ではOAuth2.0自体の詳しい説明はしませんが、ご興味がある方は以下の記事が参考になります。

murashun.jp

Google Apps ScriptでOauth2ライブラリを利用する

Google Apps ScriptでOauth2を利用するには、「apps-script-oauth2」ライブラリを利用します。 「apps-script-oauth2」はGoogleのエンジニアが作成したライブラリです。

https://github.com/googlesamples/apps-script-oauth2

ライブラリを利用するには、ツールバーの[リソース]->[ライブラリ]を選択して以下のIDを入力します。

プロジェクトキー 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF

f:id:tadaken3:20170731141636p:plain

最新のバージョンを選択して保存してください。本記事執筆時点ではバージョン21が最新です。

また、freee側にGoogle Apps Scriptをアプリとして登録する必要があります。その際にスクリプトIDが必要になるのでメモをしておきます。

スクリプトIDはスクリプトエディターのツールーバーの[ファイル]->[プロジェクトのプロパティ]から確認できます。

f:id:tadaken3:20170731141654p:plain

freeeにアプリの登録をする

freee APIを利用するアプリケーションをfreeeのWEBサイトから登録します。

登録により、アプリケーションのIDとSecretが発行されます。登録するためには会計freeeにログイン後、以下のサイトにアクセスします。

https://secure.freee.co.jp/oauth/applications

アプリケーション名、コールバックURIを入力し保存します。(入力内容は登録後にも編集できます)

アプリケーション名はお好きな名前を入力ください。サンプルでは「スプレッドシート」としています。

コールバックURIは先程取得したスクリプトIDを利用します。スクリプトIDの部分を変更して以下のURLを登録します。

コールバックURIhttps://script.google.com/macros/d/{スクリプト ID}/usercallback

f:id:tadaken3:20170731141713p:plain

保存を押すと登録が完了し、App IDとSecretが発行されました。こちらをメモしておきます。これで準備はすべてが整いました。

f:id:tadaken3:20170731141731p:plain

Google Apps Scriptをスプレッドシートに作成する

実際のスプレッドシートで動かすGoogle Apps Scriptのコードを作成していきます。以下のコードをスプレッドシートのスクリプトエディタに入力します。

//先程取得したAppID・Sceretを入力
var appId = "あなたのApp id";
var secret = "あなたのシークレット";

// 認証のエンドポイントとなるダイアログを表示します。
function alertAuth() {
  var service = getService();
  var authorizationUrl = service.getAuthorizationUrl();
  var template = HtmlService.createTemplate(
    '<a href="<?= authorizationUrl ?>" target="_blank">認証</a>. ' +
    '認証が完了したら再度操作を行ってください。');
  template.authorizationUrl = authorizationUrl;
  var page = template.evaluate();
  SpreadsheetApp.getUi().showModalDialog(page, "認証が必要です");
  Logger.log("認証が切れています");
}

//freeeAPIのサービスを取得
function getService() {
  return OAuth2.createService('freee')
      .setAuthorizationBaseUrl('https://secure.freee.co.jp/oauth/authorize')
      .setTokenUrl('https://api.freee.co.jp/oauth/token')
      .setClientId(appId)
      .setClientSecret(secret)
      .setCallbackFunction('authCallback')
      .setPropertyStore(PropertiesService.getUserProperties())
}

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

//認証後、取得したアクセストークンを元にfreeeAPIからカンパニーIDを取得する
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)
}

Google Apps Scriptを動かしてみる

まずはalertAuthメソッドで認証をおこないます。alertAuthメソッドを実行するとスプレッドシートに画像にあるダイアログが出てきます。「認証」をクリックし、そのままfreeeのアカウントで許可をしてください。

f:id:tadaken3:20170731141753p:plain

許可するとアクセストークンが取得できるので、取得したアクセストークンを使ってfreeeのAPIを操作します。 サービスオブジェクトに対して、getAccessTokenメソッドを実行することでトークンが取得できます。

Point var freeeApp = getService();
var token = freeeApp.getAccessToken();

サンプルでは取得したトークンをもとにAPI経由でカンパニーIDを取得しています。 getCompanyIdメソッドを実行するとカンパニーIDがログに出力されます。

まとめ

今回は、Google Apps Scriptでfreeeのアクセストークンを取得する方法をお伝えしました。 まとめると

  • Oauth2ライブラリの利用方法
  • freeeのアプリ登録方法
  • Google Apps Scriptでのアクセストークン取得方法

になります。

これでGoogle Apps Scriptでfreee APIを操作する準備が整いました。次回もGoogle Apps ScriptでfreeeのAPIを操作するテクニックをお伝えしていきますね。どうぞ、お楽しみに!

今回の記事はいかがでしたか?

副業やプログラミングに関する記事を書いています。(ときどき、それ以外のことも) 読者登録してもらうと更新の励みになりますのでよろしくお願いいたします。