0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

駅すぱあと VBA SDKを使って、経路の更新情報を受け取る

Posted at

本記事はヴァル研究所の支援として作成された記事です

駅すぱあとはAPIを公開しており、駅情報や経路探索などをAPI経由で行えます。メソッドはすべてGETメソッドで、情報取得系のみです。レスポンスはJSONまたはXMLで返ってきます。

この駅すぱあと APIを利用しやすくするSDKを開発しはじめました。SDKはVBAで作っており、Excelなどから利用できます(Windowsのみ、macOSでは利用できません)。

今回は、スタンダードプランで提供されている経路情報の更新判定APIに対応しました。このAPIは、「駅すぱあと」のデータとして、名称が変更された、削除されたなどの更新状態を判定します。駅名が変わった際などは、その新旧駅名を取得できます。

具体的な利用シーンとしては、通勤費管理(定期代支給)です。通勤手当の支給の際には、従業員の通勤経路の情報を保持していますが、通勤経路の駅や路線の名前が変更になったり、駅や路線が廃止になったりした場合に、見つけることができる機能となります。

では、使い方を紹介します。

必要な情報

SDKを利用する際にはAPIキーが必要です。無料トライアルがあるので、こちらから取得してください。

注意点

  • SDKはWindowsでのみ動作します
  • SDKは非公式です。公式サポートへの問い合わせはご遠慮ください

ファイルのインポート

こちらのリポジトリにある *.cls*.bas ファイルをすべてインポートします。これらは以下のライブラリを含んでいます。

初期化

先ほど取得したAPIキーを使ってSDKを初期化します。

Dim client As Ekispert
Set client = New Ekispert
client.ApiKey = "YOUR_API_KEY"

経路情報の更新判定の設定

経路情報の更新判定を行う際には、まず駅や路線、会社を指定して検索します。検索は ToolboxCourseUpdateQuery にて行います。以下の条件は、経路情報の更新判定 - 駅すぱあと API Documents 駅データ・経路検索のWebAPIにある条件を再現するものです。

Dim Query As ToolboxCourseUpdateQuery
Set Query = Client.ToolboxCourseUpdateQuery()

Query.DateProp = DateSerial(2020, 4, 1)
Query.StationNameList(0) = "高円寺"
Query.StationNameList(1) = "羽田空港第2ビル(東京モノレール・ANA利用)"
Query.StationNameList(2) = "川平"
Query.StationNameList(3) = "古瀬"
Query.StationNameList(4) = "江差"
		
Query.RailNameList(0) = "JR中央線快速"
Query.RailNameList(1) = "近鉄奈良線快急"
Query.RailNameList(2) = "小田急小田原線急行(代々木上原-新百合ケ丘)"
Query.RailNameList(3) = "旅客船(丸亀港~手島港)"

Query.CorporationNameList(0) = "JR"
Query.CorporationNameList(1) = "東京急行電鉄"
Query.CorporationNameList(2) = "富山ライトレール"
Query.CorporationNameList(3) = "十和田観光電鉄"
Query.CorporationNameList(4) = "備讃フェリー"

検索の実行

検索条件を設定したら、検索処理を実行します。結果は ResultSet クラスになります。探索がうまくいったかどうかは ResultSet.Success の値で判定してください。

Dim Result As ResultSet
Result = Query.Find()

Debug.Print Result.Success ' True または False

エラーだった場合

もし探索がエラーだった場合は ResultSet.Error の中にエラー情報があります(駅すぱあと APIからのエラーの場合)。

If Not Result.Success Then
    MsgBox Result.Error.Message
    Exit Sub
End If

成功した場合

処理が成功した場合、 ResultSet.Updates に更新情報の配列が入っています。そして、更新情報には路線(Line)、経路(Point)、会社(Corporation)の情報が入っています。

Dim i As Integer
Dim Update As Update
For i = 0 To UBound(Result.Updates)
		Update = Result.Updates(i)
		' 路線の更新情報
		If (Not Not Update.Lines) <> 0 Then
				Debug.Print Update.Lines(0).Status.Code
				Debug.Print Update.Lines(0).Name
		End If

		' 駅の更新情報
		If (Not Not Update.Points) <> 0 Then
				Debug.Print Update.Points(0).Status.Code
				Debug.Print Update.Points(0).Station.Name
		End If

		' 会社の更新情報
		If (Not Not Update.Corporations) <> 0 Then
				Debug.Print Update.Corporations(0).Status.Code
				Debug.Print Update.Corporations(0).Name
		End If
Next i

ソースコード

SDKのコードは以下のリポジトリにて公開しています。ライセンスはMIT Licenseです。

EkispertAPIMania/VBA-SDK: Excel VBAなどで動作する駅すぱあと VBA SDKです(Windowsのみ)

まとめ

経路情報の更新判定APIを使うことで、最新の路線・地点情報などに更新できます。変更前後の値も分かるので、データベースを更新したり、差分も取りやすくなります。

定期的に実行することで、情報を最新の状態に保持できます。ぜひ、システム開発に役立ててください。

何か不具合があれば、Issueにて連絡いただければ対応します(macOSでは動かないので注意してください)。

EkispertAPIMania/VBA-SDK: Excel VBAなどで動作する駅すぱあと VBA SDKです(Windowsのみ)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?