「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」の続編にあたり、PHPの「データ構造」(配列とオブジェクト)について解説します。
配列やオブジェクトは、頭の中で考えるだけでは、イメージがつかみにくいです。本書では図を多用して、配列やオブジェクトをなるべく分かりやすく解説することを心がけました。
Kindle本で、定価250円です。
VBAでData APIにアクセスする
Movable TypeのData APIは、さまざまなプログラム言語からアクセスすることができます。
その一例として、ExcelのVBA(Visual Basic for Applications)でアクセスしてみました。
JSONLibの準備
Data APIでは、JSON形式でデータをやり取りします。
しかし、ExcelのVBAには、標準ではJSONを扱う機能がありません。
そこで、「JSONLib」というライブラリを使います。
JSONLibの入手および組み込み方法は、cybozu.com developer networkの「第2回 Excelとkintoneを連携させよう」の記事をご参照ください。
記事を作成する
例として、記事を作成するプログラムを作ってみたところ、以下のようになりました。
Data APIのプロトコルに沿って、HTTP通信を順に行っています。
先頭の方のConst文にある「ユーザー名」「パスワード」「your-host」「path-to-mt」「記事作成先のブログのID」を、ご自分の環境に合わせて書き換えれば、動作を試すことができます。
Const USERNAME = "ユーザー名"
Const PASSWORD = "パスワード"
Const CLIENTID = "sample"
Const BASE = "http://your-host/path-to-mt/mt-data-api.cgi/"
Const SITE_ID = 記事作成先のブログのID
Sub main()
Dim url As String, params As String, accessToken As String
Dim json As Object
' XMLHttpとjsonlibの初期化
Dim xmlhttp As Object
Set xmlhttp = CreateObject("msxml2.xmlhttp")
Dim jsonlib As New jsonlib
' 認証
url = BASE & "v1/authentication"
params = "username=" & USERNAME & "&password=" & PASSWORD & "&clientId=" & CLIENTID
xmlhttp.Open "POST", url, False
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.send params
Set json = jsonlib.parse(xmlhttp.responseText)
If xmlhttp.Status <> 200 Then
MsgBox "認証失敗:" & xmlhttp.Status & " " & json("error")("message")
Exit Sub
End If
' アクセストークンを取得
accessToken = json("accessToken")
' 記事を作成
Dim entry As Object
Set entry = CreateObject("Scripting.Dictionary")
entry("title") = "test"
entry("body") = "あいうえお"
url = BASE & "v2/sites/" & SITE_ID & "/entries"
xmlhttp.Open "POST", url, False
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.setRequestHeader "X-MT-Authorization", "MTAuth accessToken=" & accessToken
xmlhttp.send "entry=" & jsonlib.toString(entry)
Set json = jsonlib.parse(xmlhttp.responseText)
If xmlhttp.Status <> 200 Then
MsgBox "記事作成失敗:" & xmlhttp.Status & " " & json("error")("message")
Exit Sub
End If
MsgBox "記事作成終了"
End Sub
