拙著「個人投資家は低位株で儲けなさい」が発売されました。
株価が安い「低位株」に投資する方法を解説しています。
自由国民社刊で、定価1,512円(消費税込み)です。
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行目)。
