みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
GASによるマネーフォワードクラウド請求書APIの操作についてできる限りていねいに紹介をするシリーズをお送りしています。
前回の記事はこちら。
GASでマネーフォワードクラウド請求書APIへの認証を行う方法を紹介しました。
ただ、実行確認はしましたが、何をしているのか…よくわからないというのが正直なところ。
ということで、少しずつ解説をしていきます。
今回は、OAuth2 for Apps Scriptライブラリを使ってサービスを作るスクリプトを解説します。
では、行ってみましょう!
前回のおさらい
前回の記事で3つの関数を紹介しました。
そのうちの2つがauthorize関数と、getMFInvoiceService_関数です。
authorize関数
一つは、認証をする際に実行したauthorize関数です。
/**
* 認証を行いアクセストークンをログ出力する
*/
function authorize() {
const service = getMFInvoiceService_();
const authorizationUrl = service.getAuthorizationUrl();
console.log(authorizationUrl);
}
後述するgetMFInvoiceService_関数で「サービス」を作り、そのメソッドであるgetAuthorizationUrlメソッドで認証用URLを取得、それをログ出力するというものでした。
そのURLをブラウザで開けば認証用の画面が表示されるんでしたね。
getMFInvoiceService_関数
もう一つが、authorize関数から呼び出されるgetMFInvoiceService_関数です。
以下、マネーフォワードクラウド請求書API用のサービスを作るものです。
/**
* 指定した名前で新しいMFクラウド請求書のサービスを作成する
*/
function getMFInvoiceService_() {
const serviceName = 'mfInvoice';
const authorizationBaseUrl = 'https://invoice.moneyforward.com/oauth/authorize';
const tokenUrl = 'https://invoice.moneyforward.com/oauth/token';
const properties = PropertiesService.getScriptProperties();
const clientId = properties.getProperty('CLIENT_ID');
const clientSecret = properties.getProperty('CLIENT_SECRET');
return OAuth2.createService(serviceName)
.setAuthorizationBaseUrl(authorizationBaseUrl)
.setTokenUrl(tokenUrl)
.setClientId(clientId)
.setClientSecret(clientSecret)
.setCallbackFunction('authCallback_')
.setPropertyStore(PropertiesService.getUserProperties())
.setScope('write');
}
ちょっと難しそうですよね。
この関数が何をしているのか、というのを今回は解説をしていきます。
サービスを作成するgetMFInvoiceService_関数
では、getMFInvoiceService_関数が何をしているのか、もう少し詳しく見ていきましょう。
OAuth2Serviceオブジェクトとその作成
14行目以降に注目してほしいのですが、長いreturn文がありますね。
ここでreturnしているのは、OAuth2ライブラリのcreateService関数の戻り値で、OAuth2Serviceオブジェクトと呼ばれるものです。
OAuth2Serviceオブジェクトは、OAuth2によるサービス間の権限のやり取りをする機能を持っています。
使用する際には、都度作成して、それに必要な様々な情報を持たせる必要があります。
OAuth2Serviceオブジェクトを作成するのが、以下のcreateService関数。
そして、それに必要な情報をもたせるのが、その後にずらずらと続いているset~で始まるメソッド群ということになります。
OAuth2Serviceオブジェクトに必要なデータをセットする
マネーフォワードクラウド請求書APIでは、以下メソッドでそれぞれを設定する必要があります。
メソッド名 | 説明 |
---|---|
setAuthorizationBaseUrl(authorizationBaseUrl) | 認証用ベースURLを設定する |
setTokenUrl(tokenUrl) | トークンURLを設定する |
setClientId(clientId) | client_idを設定する |
setClientSecret(clientSecret) | client_secretを設定する |
setCallbackFunction(‘authCallback_’) | OAuthフロー完了時に呼び出す関数名を設定する |
setPropertyStore(PropertiesService.getUserProperties()) | アクセストークンを保管するプロパティストアを設定する |
setScope(‘write’) | スコープを設定する |
再度、getMFInvoiceService_関数のコードをながめてみましょう。
7,8行目で認証用ベースURLとトークンURLを定数に代入していますね。
10~12行目でスクリプトプロパティから前回の記事でセットした、client_idとclient_secretを取り出しています。
19行目以降のメソッドではベタ打ちの引数指定になっていますが、まず、完了時に呼び出す関数は、今回作成したもうひとつの関数authCallback_です。
アクセストークンはユーザープロパティに保管し、スコープはマネーフォワードクラウド請求書のアプリケーション作成時に設定したwriteを設定しています。
…ということなんですが、それぞれの設定が何を表しているのか、わかったりわからなかったりですよね…。
早く知りたいところですが、次回以降の記事で少しずつ解説をしていきますね。
まとめ
以上、OAuth2 for Apps Scriptライブラリを使ってサービスを作るスクリプトを解説しました。
サービス(OAuth2Serviceオブジェクト)というものの作成と、いくつかのデータの設定が必要ということはわかっていただけたかなと思います。
次回、認証のときに何が起きているのか、もう少し詳しく見ていきましょう。
どうぞお楽しみに!
連載目次:【初心者向け】GASでマネーフォワード請求書API
マネーフォワード請求書APIを使用することで、GASからマネーフォワード請求書のデータを取得したり、操作をしたりすることが可能です。このシリーズでは、そのはじめの一歩として、マネーフォワード請求書APIとは何か?またGASによるアクセスの初歩をお伝えしていきます!- はじめてのマネーフォワード請求書API~その概要とおおまかな手順
- マネーフォワード請求書APIへのアクセスをテストしてみよう!
- GAS用のマネーフォワード請求書APIアプリケーションを作成する手順
- GASでAPIを操作をする強い味方「OAuth2 for Apps Script」ライブラリとその導入
- GASでマネーフォワードクラウド請求書APIへの認証とアクセストークンの取得を行う方法
- OAuth2 for Apps Scriptライブラリを使ってサービスを作るスクリプトを解説
- OAuth2 for Apps Scriptライブラリはどうやって認証用URLを作成しているのか
- OAuth2 for Apps Scriptライブラリはどうやってアクセストークンを取得するのか
- GASではじめてのマネーフォワードクラウド請求書APIへリクエスト
- マネーフォワードクラウド請求書APIから請求書一覧の取得をテストしてみよう!
- マネーフォワードクラウド請求書APIによる請求書一覧のデータを読み取ってみよう!
- GASでマネーフォワード請求書の請求書一覧を取得するスクリプト
- GASでマネーフォワードクラウド請求書の請求書一覧をスプレッドシートに書き出す方法
- マネーフォワードクラウド請求書の請求書一覧の全件をスプレッドシートに書き出すスクリプト