OAuth2 for Apps Scriptライブラリを使ってサービスを作るスクリプトを解説


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

GASによるマネーフォワードクラウド請求書APIの操作についてできる限りていねいに紹介をするシリーズをお送りしています。

前回の記事はこちら。

GASでマネーフォワードクラウド請求書APIへの認証とアクセストークンの取得を行う方法
GASによるマネーフォワードクラウド請求書APIの操作についてできる限りていねいに紹介をするシリーズです。今回は、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関数。

OAuth2.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オブジェクト)というものの作成と、いくつかのデータの設定が必要ということはわかっていただけたかなと思います。

次回、認証のときに何が起きているのか、もう少し詳しく見ていきましょう。

OAuth2 for Apps Scriptライブラリはどうやって認証用URLを作成しているのか
GASによるマネーフォワードクラウド請求書APIの操作についてできる限りていねいに紹介をするシリーズです。今回は、OAuth2ライブラリがどうやって認証用URLを作成しているのかを解説します。

どうぞお楽しみに!

連載目次:【初心者向け】GASでマネーフォワード請求書API

マネーフォワード請求書APIを使用することで、GASからマネーフォワード請求書のデータを取得したり、操作をしたりすることが可能です。このシリーズでは、そのはじめの一歩として、マネーフォワード請求書APIとは何か?またGASによるアクセスの初歩をお伝えしていきます!
  1. はじめてのマネーフォワード請求書API~その概要とおおまかな手順
  2. マネーフォワード請求書APIへのアクセスをテストしてみよう!
  3. GAS用のマネーフォワード請求書APIアプリケーションを作成する手順
  4. GASでAPIを操作をする強い味方「OAuth2 for Apps Script」ライブラリとその導入
  5. GASでマネーフォワードクラウド請求書APIへの認証とアクセストークンの取得を行う方法
  6. OAuth2 for Apps Scriptライブラリを使ってサービスを作るスクリプトを解説
  7. OAuth2 for Apps Scriptライブラリはどうやって認証用URLを作成しているのか
  8. OAuth2 for Apps Scriptライブラリはどうやってアクセストークンを取得するのか
  9. GASではじめてのマネーフォワードクラウド請求書APIへリクエスト
  10. マネーフォワードクラウド請求書APIから請求書一覧の取得をテストしてみよう!
  11. マネーフォワードクラウド請求書APIによる請求書一覧のデータを読み取ってみよう!
  12. GASでマネーフォワード請求書の請求書一覧を取得するスクリプト
  13. GASでマネーフォワードクラウド請求書の請求書一覧をスプレッドシートに書き出す方法
  14. マネーフォワードクラウド請求書の請求書一覧の全件をスプレッドシートに書き出すスクリプト

タイトルとURLをコピーしました