久しぶりのGAS系の記事です。
GASでAPIを叩きたいという願望はみなさん多いと思います。取得したデータをスプレッドシートに吐き出したり、スプレッドシートのデータをAPI先へ送り込むなど、作業がイメージしやすいですよね。
でも、そんなAPIを使いたいという願望に障壁となってくるのが、アクセストークンの取得というAPIを使うための準備作業です。OAuthという認可のスキームを一般的なAPIでは利用しており、それを綺麗にPassできないとアクセストークンが取得できず、結果としてAPIの利用にたどり着けません。
そのため、今回はGASでAPIを使うためのライブラリを紹介していきます。
ノンプロが覚えておくOAuthの基本事項
さて、OAuthをPassしなきゃいけません、とは言いましたが、そもそもOAuthが何をしているのか、という点から理解することはノンプロ敵ではありません。(厳密に理解しようとすると難しいところもあるため)
そこで、ノンプロが覚えておくべきOAuthの基本的事項を考えてみましたが、以下かなぁと思います。
何が違うの?とかどういうことやってるの?っていう疑問も当然湧くかと思うのですが、先ほどもいった通りOAuth自体の内容を把握するのは一旦無視しましょう。あくまで目線はAPIを利用するために、OAuthをPassするという観点からみていくのがノンプロ向けです。
そして、各OAuthのバージョンに合わせたライブラリを利用して、難しい部分は全てライブラリに依存するのがベターかと思います。
OAuth2.0を採用されているAPIで利用するライブラリ
OAuth2.0を採用しているAPIでアクセストークンを取得する場合は以下のライブラリを利用しましょう。
ライブラリをインポートする場合は、以下のスクリプトIDを指定してライブラリの追加をしてください。
1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
今回は残念ながらライブラリの使い方までは説明していると長くなってしまうので、後日OAuth2.0のライブラリだけは解説記事を作ろうかなぁと思います。基本的に難しいことがわからない場合は、githubのsampleディレクトリに上がっているサンプルをまんま使うのがいいと思います。
OAuth2.0を利用しているAPI群
以下のようなサービスがOAuth2.0を採用しています。
- DocuSign
- FirebaseDB
- DropBox
- freee
- github
- Line
- salesforce
- zendesk
- zoom etc…
みなさんが使いたいようなAPIの多くはOAuth2.0を採用していると思います。
OAuth1.0を採用されているAPIで利用するライブラリ
OAuth1.0を採用しているAPIでアクセストークンを取得する場合は以下のライブラリを利用しましょう。
ライブラリをインポートする場合は、以下のスクリプトIDを指定してライブラリの追加をしてください。
1CXDCY5sqT9ph64fFwSzVtXnbjpSfWdRymafDrtIZ7Z_hwysTY7IIhi7s
OAuth1.0を利用しているAPI群
以下のようなサービスがOAuth2.0を採用しています。
- Jira
- Trello
- yelp
- evernote
だいぶ数は減ってきているのですが、OAuth1.0を採用しているAPIもまだまだあります。
EvernoteAPIに関する注意点
EvernoteAPIはauthorizeやrequest_token/access_tokenの取得のためのendpointが同一になっており、クエリで内容を指定する必要があり、GASでは少しハードルが高いので、pythonなどでSDKを利用するか、以下のURLから直接アクセストークンを発行することをお勧めします。
まとめ
今回はGASでAPIを利用したい人向け(ノンプロオンリーです、プロは普通にやってください)に、OAuthでアクセストークンを取得するための基本を説明しました。
難しいところはライブラリに任せて、自分はやりたいところに集中するのがベターだと思います。ライブラリで対応できない形のOAuthを採用しているAPIは大体SDKなどの他の手段を提供しているので、そちらを使うことをお勧めします。
多分signitureとか真面目に考え始めてもハマるだけなので。。