必要な情報が揃ったので、次にAPI認証をGAS側で行います。
「アプリケーション登録」がまだ済んでない場合は、前回記事をご覧ください。
今回使用するモノの確認
無料プランからMisoca APIは使用可能です。すでにアカウントがある方はそちらを使用してもらって、アカウントを持っていない場合は、無料プランアカウントをサイトの説明に従って作成しておいてください。
任意のスプレッドシートから、Apps Scriptエディターを立ち上げてください
OAuth2 for Apps Script は、OAuth2 トークンを作成および承認し、有効期限が切れたときに更新する機能を提供する Google Apps Script のライブラリ。(Misoca APIの認証トークン管理用)
MISOCAを外部アプリケーションから利用するためのAPIです。(利用にはMISOCAアカウントが必要)
以上必要なモノの確認でした。
OAuth2 for Apps Script ライブラリの導入
GASでOAuth2認証を通すなら、とても便利なライブラリ「OAuth2 for Apps Script」を使うのが手っ取り早いです。
認証に必要なトークンの管理からリフレッシュまで、全部お任せできる賢いヤツです。
もしまだ利用したことがないなら、これを機にユーザーになってみてください。
では、先ほど「コールバックURL」を取得したGASエディターを開いて、
左側のタブ「ライブラリ」の+(プラス)をクリックします。
表示されたポップアップに「OAuth2 for Apps Script」のスクリプトIDを入力します。
1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
入力できたらその下の「検索」ボタンを押してください。
すると、自動で上図のようにライブラリ候補が表示されます。
デフォルトでバージョンは最新のものが選択されますが、心配な場合はドロップダウンから一番大きい数字のバージョンを確認してください。
IDは「OAuth2」のまま変更せずに「追加」ボタンを押します。
無事に「OAuth2 for Apps Script」ライブラリが導入できました。
GASからMisoca APIアプリケーションの認証を通す
ここからGASにコードを書き込んでいきます。
//アプリケーションIDとシークレットの定義
const sp = PropertiesService.getScriptProperties();
const CLIENT_ID = sp.getProperty('CLIENT_ID');
const CLIENT_SECRET = sp.getProperty('CLIENT_SECRET');
//OAuth認証を行う関数
function run() {
var service = getService_();
var authorizationUrl = service.getAuthorizationUrl();
Logger.log('Open the following URL and re-run the script: %s',authorizationUrl);
}
//サービスの設定
function getService_() {
return OAuth2.createService('MISOCA')
// エンドポイントURL
.setAuthorizationBaseUrl('https://app.misoca.jp/oauth2/authorize')
.setTokenUrl('https://app.misoca.jp/oauth2/token')
// スコープ
.setScope('write')
// クライアントIDとシークレット
.setClientId(CLIENT_ID)
.setClientSecret(CLIENT_SECRET)
// コールバック関数
.setCallbackFunction('authCallback')
// トークンの保存
.setPropertyStore(PropertiesService.getUserProperties());
}
//OAuthコールバックのハンドリング
function authCallback(request) {
var service = getService_();
var authorized = service.handleCallback(request);
if (authorized) {
return HtmlService.createHtmlOutput('認証成功!');
} else {
return HtmlService.createHtmlOutput('認証失敗');
}
}
まずは上のコードをコピーペーストして保存してください。
GASのプロパティサービスを利用する。
コードの冒頭に以下の箇所があります。
//アプリケーションIDとシークレットの定義
const sp = PropertiesService.getScriptProperties();
const CLIENT_ID = sp.getProperty('CLIENT_ID');
const CLIENT_SECRET = sp.getProperty('CLIENT_SECRET');
これは、万が一コードが流出した時に漏れてはいけない情報保全のために、「プロパティサービス」からIDとシークレットを呼び出しています。
呼び出すということは、その前に設定が必要なので、登録を行っていきましょう。
GASエディターの左端のタブの「歯車アイコン(プロジェクトの設定)」をクリックします。
プロジェクトの設定ページの最下段までスクロールすると、「スクリプト プロパティ」という項目があると思います。
「スクリプト プロパティを追加」ボタンを押して、先の「CLIENT_ID」と「CLIENT_SECRET」を設定していきます。
上図のように、プロパティと値を入力して最後に必ず「スクリプトプロパティを保存」ボタンを押してください。ボタンを押さずにコードページなどに戻った場合、設定が保存されません。
プロパティと値の対応は以下の通りです。
Misoca APIのアプリケーションIDとシークレットを忘れた場合は、以下のURLから確認してください。
認証を実行する
それではコードページに戻って、認証を実行していきたいと思います。
GASのコードページで「run」関数を実行してください。
関数が実行されると、画面下に「実行ログ」のコンソールが出てきます。
ログに出力された「Open the following URL and re-run the script: 」の後に続くURLをすべてコピーしてください。
そのURLをGASを実行したブラウザのアドレスバーに貼り付けて、Enterキーを押します。
URLに問題がなければ、Misoca APIアプリケーションの承認を求めるページが表示されます。
「承認」ボタンを押して、「認証成功!」の文字が表示されればアプリケーションの認証は完了です。
お疲れ様でした、これでGASからMisoca APIを利用する準備が完了しました。
次は、いよいよMisoca APIを利用して情報取得をしてみたいと思います。
続きは、「GASでMisoca APIを操作して請求書をまとめて作成する【API 情報取得編】」記事をお待ちください。
コメント