Excel VBA 逆引き集 | OAuth必要なAPI

Excel VBA
スポンサーリンク

OAuth認証が必要なAPIの呼び出し

多くの実務向けWeb API(Google、Microsoft Graph、Twitterなど)は OAuth 2.0 による認証が必須です。
初心者にとっては「トークンを取得してからAPIを呼び出す」という流れが少し難しく感じられるので、コード例とテンプレートをかみ砕いて説明します。


基本の考え方

  • OAuth 2.0とは?
    ユーザーの認証情報(ID/パスワード)を直接扱わず、アクセストークン を使ってAPIにアクセスする仕組み。
  • 流れ:
    1. クライアントID・シークレットを使って認証サーバーにアクセス
    2. アクセストークンを取得
    3. トークンをHTTPヘッダーに付けてAPIを呼び出す

テンプレ1:アクセストークンを取得する(POSTリクエスト)

Sub GetOAuthToken()
    Dim http As Object
    Dim url As String
    Dim postData As String
    Dim response As String
    
    ' 認証サーバーのトークンエンドポイント(例)
    url = "https://example.com/oauth/token"
    
    ' クライアント情報と認証情報
    postData = "grant_type=client_credentials" & _
               "&client_id=あなたのClientID" & _
               "&client_secret=あなたのClientSecret"
    
    ' HTTPオブジェクト作成
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "POST", url, False
    http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    http.Send postData
    
    response = http.responseText
    
    MsgBox "トークンレスポンス: " & response
End Sub
VB
  • ポイント:
    • grant_type=client_credentials は「サーバー間通信」用の認証方式。
    • レスポンスはJSON形式で返り、access_token を取り出す必要がある。

テンプレ2:レスポンスからアクセストークンを取り出す

※「VBA JSON」ライブラリ(JsonConverter.bas)を導入しておくと便利。

Sub ParseOAuthToken()
    Dim http As Object
    Dim url As String
    Dim postData As String
    Dim response As String
    Dim Json As Object
    
    url = "https://example.com/oauth/token"
    postData = "grant_type=client_credentials&client_id=xxx&client_secret=yyy"
    
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "POST", url, False
    http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    http.Send postData
    
    response = http.responseText
    
    ' JSON解析
    Set Json = JsonConverter.ParseJson(response)
    
    Dim token As String
    token = Json("access_token")
    
    MsgBox "取得したトークン: " & token
End Sub
VB
  • ポイント:
    • ParseJson でレスポンスをDictionaryに変換。
    • Json("access_token") でトークンを取り出す。

テンプレ3:アクセストークンを使ってAPIを呼び出す(GET)

Sub CallAPI_WithOAuth()
    Dim http As Object
    Dim url As String
    Dim token As String
    Dim response As String
    
    ' 事前に取得したトークンを変数にセット
    token = "ここに取得したアクセストークンを入れる"
    
    ' 呼び出すAPIのURL
    url = "https://example.com/api/data"
    
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.setRequestHeader "Authorization", "Bearer " & token
    http.Send
    
    response = http.responseText
    
    MsgBox "APIレスポンス: " & response
End Sub
VB
  • ポイント:
    • Authorization: Bearer トークン をヘッダーに付ける。
    • これで認証済みのAPI呼び出しが可能。

テンプレ4:シートに展開する(実務向け)

Sub CallAPI_ToSheet()
    Dim http As Object
    Dim url As String
    Dim token As String
    Dim response As String
    Dim Json As Object
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    
    token = "取得したアクセストークン"
    url = "https://example.com/api/users"
    
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.setRequestHeader "Authorization", "Bearer " & token
    http.Send
    
    response = http.responseText
    Set Json = JsonConverter.ParseJson(response)
    
    ws.Cells.Clear
    ws.Range("A1").Value = "名前"
    ws.Range("B1").Value = "メール"
    
    Dim i As Long
    For i = 1 To Json.Count
        ws.Cells(i + 1, 1).Value = Json(i)("name")
        ws.Cells(i + 1, 2).Value = Json(i)("email")
    Next i
    
    MsgBox "APIデータをシートに展開しました!"
End Sub
VB
  • ポイント:
    • JSON配列をループしてExcelに書き込む。
    • 実務で「ユーザー一覧」「商品一覧」などを取り込むのに便利。

例題で練習

'例1:トークンを取得する
'例2:レスポンスからトークンを取り出す
'例3:トークンを使ってAPIを呼び出す
'例4:レスポンスをシートに展開する
VB

初心者向けポイント

  • OAuthは「トークンを取得してからAPIを呼ぶ」流れ → 2段階構成。
  • トークンはヘッダーに付けるAuthorization: Bearer トークン
  • JSON解析ライブラリを導入すると便利 → レスポンス処理が簡単。
  • シート展開が実務で最も使いやすい → API連携の定番パターン。

👉 この「OAuth必要なAPIテンプレ」を覚えておけば、Excel VBAで 認証付きAPIを呼び出し、シートにデータを展開して業務に活用する処理 を簡単に作成できます。

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