MENU

ExcelからConoHaを操作!VBAでAPI連携する方法

当ページのリンクには広告が含まれています。

「ConoHa VPSの利用状況や請求額を、Excelでサクッと管理したい」
「上司への報告資料を作るために、サーバー一覧を自動で取得したい」

そんなビジネスユーザーの要望に応えるべく、今回はExcel VBA(マクロ)を使ってConoHa APIを操作する方法をご紹介します。

APIを使えば、普段使い慣れたExcelから直接サーバー情報を取得したり、請求データを出力したりすることが可能です。ぜひ業務効率化にお役立てください。

目次

準備:ConoHa APIを使うための事前知識

ExcelからAPIを叩く前に、基本的な流れを確認しておきましょう。

今回は、サーバーの契約状況や請求情報を取得する「Account (Billing)」機能を使用します。

データ取得の基本的な流れ

  1. APIユーザーの作成: ConoHaのコントロールパネルでAPIユーザーを作成しておく。
  2. トークン(Token)の取得: テナントID、ユーザーID、パスワードを使って認証し、一時的なアクセスキー(トークン)を取得する。
  3. 情報の取得: 取得したトークンを使って、各種API(請求情報など)を叩く。

APIの仕様詳細は、公式ドキュメントを参照してください。

ConoHa APIドキュメント (v3.0)

Excel VBAでAPIを叩く環境構築

VBA標準の機能だけではJSON形式のデータを扱うのが難しいため、以下のツールを組み合わせて環境を作ります。

  • HTTPS通信: MSXML2.XMLHTTP (Windows標準コンポーネント)
  • JSONパース: JSONLib (VBA用JSONパーサー)

JSONLibは、以下のGoogle Code Archiveなどから入手可能です。

vba-json – Google Code Archive

実践:トークン取得マクロの実装

では、実際にコードを書いていきましょう。

まずはAPI操作の基本となる「トークン取得」の関数です。

 Private Function GetToken(ByVal strUserID As String, ByVal strPassword As String, Optional ByVal strTenantID As String) As String

Dim httpReq As Object
Set httpReq = CreateObject("MSXML2.XMLHTTP")

' リクエストボディの作成(JSON)
Dim strPostData As Variant
strPostData = "{""auth"":{""passwordCredentials"":{""username"":""" & strUserID & """,""password"":""" & strPassword & """},""tenantId"":""" & strTenantID & """}}"

' APIエンドポイント(Identity Service)へPOST送信
Call httpReq.Open("POST", strEndpointForIdentity, False)
Call httpReq.setRequestHeader("Accept", "application/json")
Call httpReq.send(strPostData)

' レスポンス待ち
Do While httpReq.readyState <> 4
    DoEvents
Loop

If httpReq.Status = 200 Then
    ' レスポンスJSONをパース
    Dim strJson As String
    Dim objJson As Object
    strJson = httpReq.responseText
    Set objJson = StringToJson(strJson)
  
    ' トークンIDを抽出して返す
    GetToken = objJson("access").item("token").item("id")
Else
    MsgBox ("トークンが取得できませんでした")
    GetToken = ""
End If
End Function 

実行結果:Excelシートへの出力

この関数を使って、実際にデータを取得してみましょう。

1. 情報入力画面

ExcelシートにAPIユーザー情報を入力し、「情報取得」ボタンを押すとマクロが走るように設定します。

2. 契約情報の取得結果

APIから返ってきたレスポンスをセルに書き出すと、このように契約状況や請求金額が一覧で表示されます。

3. VPS一覧の取得

同様にして、稼働中のVPS一覧を取得することも可能です。

【注意点】JSONLibのバグ回避

JSONLibは、キー名にコロン(:)が含まれていると処理が止まることがあるようです。

ConoHaのAPIレスポンスにはコロンが含まれるキーがあるため、パース前に置換処理を入れておくと安全です。

strResponseText = Replace(strResponseText, "OS-DCF:", "OS-DCF_")
strResponseText = Replace(strResponseText, "OS-EXT-AZ:", "OS-EXT-AZ_")
strResponseText = Replace(strResponseText, "OS-EXT-SRV-ATTR:", "OS-EXT-SRV-ATTR_")
strResponseText = Replace(strResponseText, "OS-EXT-STS:", "OS-EXT-STS_")
strResponseText = Replace(strResponseText, "OS-SRV-USG:", "OS-SRV-USG_")
strResponseText = Replace(strResponseText, "OS-EXT-IPS-MAC:", "OS-EXT-IPS-MAC_")
strResponseText = Replace(strResponseText, "OS-EXT-IPS:", "OS-EXT-IPS_")
strResponseText = Replace(strResponseText, "os-extended-volumes:", "os-extended-volumes_")

サンプルファイルのダウンロード

今回作成したマクロ付きExcelファイルは、GitHubで公開しています。

コードの詳細確認や、手っ取り早く動かしてみたい方は、以下からダウンロードしてください。

ConoHa.xlsm をダウンロード (GitHub)

まとめ

Excel VBAを活用すれば、専用の管理画面を作らなくても、手軽にConoHaのサーバー管理やコスト管理を行うことができます。

「毎月の請求額を自動で集計したい」「サーバーのIPアドレス一覧をExcelで管理したい」といった業務に、ぜひAPI連携を活用してみてください。

【推奨】業務システム化に有効なアイテム

生成AIを学ぶ

システム化のパートナー(ミラーマスター合同会社)

VPSサーバの選定

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次