どうも。つじけ(tsujikenzo)です。この連載では 「会計freeeAPIを使って残高確認表を作成しよう」 について全7回でお送りします。今日は2回目で 「アプリとアクセストークンを準備する」 をお届けします。
前回のおさらい
前回は、「連載の概要と準備運動」 ということで、この連載の概要と、事前準備・予備知識についてお届けしました。
今回は、「アプリとアクセストークンを準備する」 をお届けします。
「アプリ」と「アクセストークン」は、一度作成すればよいもので、GASを実行するたびに設定を確認したり、変更するものではありません。
この連載では、認証の仕組みについて深い解説はしませんので、必要なスクリプトを実行できるように読み進めていきましょう。
アプリ
前半は、「アプリ」についてです。
アプリとは
「アプリ」とは、会計freee上のさまざまな情報を操作するための「アプリケーション」の略です。会計freeeでは、ユーザーが作成したアプリを 「マイアプリ」 と呼びます。
マイアプリはGASで操作します。その、最大の役割は「本人確認」です。会計freee上には機密情報がたくさん登録されています。情報を操作するための本人確認を、マイアプリできちんと行います。
マイアプリの作成方法
会計freeeにログインします。
事業所が1つしかない場合や、アカウントを切り替える必要がない場合は、この手順は飛ばしてください。右上のアカウント情報をクリックして、事業所を切り替えます。
ご自身のアカウントでは操作をしたくないという方は、freeeで用意されている「開発用テスト事業所」を作成することを強くオススメします。架空の銀行口座や、取引のダミーデータが登録されていますので、本番と同様のテストができます。
事業所を切り替えたら、[関連プロダクト・サービス]から[freeeアプリストア]をクリックします。
アプリストアが表示されたら、[開発者ページ]をクリックします。
右上の[アプリ管理]をクリックします。
開発アプリ一覧が表示されます。はじめてページを開いたときはアプリがなにもありません。
[+新規追加]をクリックします。
[アプリ名][概要][利用規約の同意]を入力して、最後に右上の[作成]をクリックします。
アプリが作成され、アプリの基本情報画面が表示されます。
基本情報画面では以下の3項目が重要になります。
1. コールバックURL
2. クライアントID
3. クライアントシークレット
後ほど使いますので、メモ帳などにコピペしておきましょう。そしてこの3つは、会計freeeの情報にアクセスするための大切な個人情報 になりますので、他人には教えないようにしましょう。
コールバックURLの設定
コールバックURLには、コンテナバインドスクリプトのスクリプトIDを使用した、下記URLを指定します。
'https://script.google.com/macros/d/スクリプトID/usercallback'
事前準備で作成したコンテナバインドスクリプトのスクリプトIDを確認しましょう。
コールバックURL欄に入力して、必ず「下書き保存」をクリックします。
マイアプリの作成はここまでです。
アクセストークン
後半は、「アクセストークンについて」です。
アクセストークンとは
「アクセストークン」とは、マイアプリが使用する、会計freeeの情報にアクセスするための、いわば秘密のパスワードです。
そして、会計freeeとマイアプリでアクセストークンをやりとりする処理は、完全に自動化されており、私たちユーザーにとって無意識で安全に使えるものになっています。
書かなければならないスクリプトも少ないですので、手順通りに進めましょう。
アクセストークンの取得
スクリプトエディターを開きます。
スクリプトファイル[アクセストークン取得]を作成します。
下記コードをコピペします。
//マイアプリ情報
const CLIENT_ID = 'クライアントID';
const CLIENT_SECRET = 'クライアントシークレット';
// 認証のエンドポイントとなるダイアログを表示します。
function alertAuth() {
const service = getService();
const authorizationUrl = service.getAuthorizationUrl();
const template = HtmlService.createTemplate(
'<a href="<?= authorizationUrl ?>" target="_blank">認証</a>. ' +
'こちらをクリックすると表示される新しいウィンドウで「許可する」をクリックしてください。');
template.authorizationUrl = authorizationUrl;
const page = template.evaluate();
SpreadsheetApp.getUi().showModalDialog(page, "認証をしてください");
}
//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) {
const service = getService();
const isAuthorized = service.handleCallback(request);
if (isAuthorized) {
return HtmlService.createHtmlOutput('認証に成功しました。ウィンドウを閉じてください。');
} else {
return HtmlService.createHtmlOutput('認証に失敗しました。');
};
}
//アクセストークン取得
function getMyAccessToken() {
//freeeAPIのサービスからアクセストークンを取得
const accessToken = getService().getAccessToken();
console.log(accessToken);
}
マイアプリ情報に、「クライアントID」と「クライアントシークレット」を入力します。
//マイアプリ情報
const CLIENT_ID = 'クライアントID';
const CLIENT_SECRET = 'クライアントシークレット';
alertAuth()を実行したあとに、バインドしているスプレッドシートを開きます。
(初回実行時は認証を求められますので、ご対応お願いします。)
ダイアログメッセージに表示されている[認証]をクリックします。
「アプリ連携の開始」ウィンドウが表示されたら、[許可する]をクリックします。
このような表示がでたら認証成功です。ウィンドウは閉じて構いません。
これで、アクセストークンを取得する準備が整いました。スクリプト内のgetMyAccessToken()を実行してみましょう。
アクセストークンを取得できています。
アクセストークンを取得する準備は、以上です。今後は、プロジェクトの内のどこでも以下のステートメントを記述するだけで、アクセストークンが取得できます。
//アクセストークンを取得する
const accessToken = getService().getAccessToken();
まとめ
以上で、「アプリとアクセストークンを準備する」 ということで、自分専用の「マイアプリ」を作成し、アクセストークンを取得するステートメントを作成しました。
一度認証作業を行えば、後は無意識にアクセストークンを取得できますので、私たちノンプログラマーでも楽にプログラミングができます。
次回は 「会計freeeAPIを操作する」 をお届けします。
この連載の目次
[GAS]会計freeeAPIを使って残高確認表を作成しよう
1. [GAS][会計freee]連載の概要と準備運動
2. [GAS][会計freee]アプリとアクセストークンを準備する
3. [GAS][会計freee]会計freeeAPIを操作する
4. [GAS][会計freee]事業所IDを取得しよう
5. [GAS][会計freee]取引(収入/支出)を取得しよう
6. [GAS][会計freee]取引(収入/支出)を登録しよう
7. [GAS][会計freee]残高確認表を作成しよう