拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
VBA用Data APIライブラリ(その3・引数の扱い方)
Movable TypeのVBA用Data APIライブラリで、sendメソッドの引数の扱い方を解説します。
1.Scripting.Dictionary型のオブジェクトを利用
APIのエンドポイントによって、パラメータとして多数の値を渡すものがあります。
その場合、パラメータの名前と値を、Scripting.Dictionary型のオブジェクトに代入して、sendメソッドに渡します。
Scripting.Dictionary型は、要素のキーを文字列で指定できる配列のようなものです。
PHPで言うところの連想配列に相当します。
Scripting.Dictionary型は以下のようにして使うことができます。
Dim obj As Scripting.Dictionary Set obj = New Scripting.Dictionary obj("キー1") = 値1 obj("キー2") = 値2 ・・・
また、オブジェクトの作成/更新を行うエンドポイントでは、パラメータとして、作成/更新するオブジェクトを渡します。
このオブジェクトも、Scripting.Dictionary型のオブジェクトで表します。
2.配列はCollection型で表す
オブジェクトの作成の際に、フィールドによっては、配列のデータが必要になる場合があります。
その場合は、Collection型のオブジェクトを作成し、必要な数だけ要素を追加するという手法を取ります。
Collection型は以下のようにして使うことができます。
Dim c As Collection Set c = New Collection c.Add 値1 c.Add 値2 ・・・
3.例
例えば、以下のようなことを行いたいとします。
- IDが1番のブログ(またはウェブサイト)に記事を新規作成します。
- 作成した記事を、IDが10番と11番のカテゴリに割り当てます。
この場合のプログラムは以下のようになります。
Sub CreateEntry() Dim api As MTDataAPI, i As Integer Dim response As Scripting.Dictionary Dim params As Scripting.Dictionary, entry As Scripting.Dictionary Dim cats As Collection, cat As Scripting.Dictionary ' 初期化 Set api = New MTDataAPI api.init "http://your-host/path-to-mt/mt-data-api.cgi", "クライアントID" ' 認証 Set params = New Scripting.Dictionary params("username") = "ユーザー名" params("password") = "パスワード" Set response = api.send("authenticate", params) If response.Exists("Error") Then MsgBox "認証失敗" Exit Sub End If ' 記事作成 Set entry = New Scripting.Dictionary entry("title") = "タイトル" entry("body") = "本文" Set cats = New Collection Set cat = New Scripting.Dictionary cat("id") = 10 cats.Add cat Set cat = New Scripting.Dictionary cat("id") = 11 cats.Add cat Set entry("categories") = cats Set response = api.send("createEntry", 1, entry) If response.Exists("Error") Then MsgBox "記事作成失敗" Exit Sub End If MsgBox "記事作成成功" End Sub
11~18行目は、認証を行う部分です。
ユーザー名とパスワードの情報をScripting.Dictionary型のオブジェクトに代入し、それをsendメソッドに渡しています。
20行目以降は、記事を作成する部分です。
まず、記事のタイトル/本文をScripting.Dictionary型のオブジェクトに代入します(20~22行目)。
記事のカテゴリは複数あるので、Collection型のオブジェクトを用意し、それぞれのカテゴリのIDを代入しています(23~30行目)
そして、sendメソッドに記事のオブジェクトを渡して、記事を作成します(31行目)。