狠狠撸

狠狠撸Share a Scribd company logo
PHPやVBAでMovable Typeを操作しよう
Data API Library for PHP/VBAのご紹介
2016/2/22
【MT東京-21】Data API 3.0
藤本 壱
今日のアジェンダ
? 自己紹介
? Data API Library for PHPのご紹介
? Data API Library for VBAのご紹介
? 注意点
? まとめ
2
自己紹介
3
自己紹介その1
? 藤本 壱(ふじもと はじめ)
? 兵庫県伊丹市出身
? 群馬県前橋市在住
東京
埼玉
山梨
神奈川
栃木
茨城
千葉
4
自己紹介その2
? 本職はPC系のフリーライター
? 2004年秋からMovable Typeユーザー
? さまざまなプラグインを開発
5
Data API Library for PHPのご紹介
6
Movable Typeでありがちな話
? Movable TypeはPerlでできている
? PHPならできるがPerlは無理
? PHPでいじれるなら触っても良いが…
7
そんなあなたに
Data API
Library
For PHP
Data API Library for PHP
? PHPでData APIを扱うライブラリ
? Data APIでできることをカバー
? SixApart謹製JavaScriptライブラリに近い構
文
? 以下からダウンロード
http://bit.ly/mt_dataapi_php
Data API Library for PHPでできること
? PHPベースの独自の管理画面の開発
? PHP製の他のCMSとの連携
? CLI版PHPでのバッチ処理開発
10
デモをご覧ください
11
初期化
12
require_once('path/to/mt-data-api.php');
$api =
new MTDataAPI(
'http://your-host//path-to-mt/mt-data-api.cgi',
'クライアントID'
);
? Data APIのオブジェクトを生成
データの取得
? list系/get系のメソッド
13
オブジェクト 複数(list系) 単数(get系)
記事 listEntries getEntry
ウェブページ listPages getPage
カテゴリ listCategories getCategory
フォルダ listFolders getFolder
アイテム listAssets getAsset
データの取得
? パラメータ
? list系ではサイト(ウェブサイト/ブログ)IDや親
オブジェクトのID
? get系ではサイトのIDや対象のオブジェクトの
ID
? 戻り値
? list系では「items」の要素がオブジェクトの配列
? get系では戻り値がオブジェクト
14
データ取得の例
15
$response = $api->listEntries(サイトID);
if (isset($response['error'])) {
エラー処理
}
else {
$entries = $response['items'];
各記事を処理
}
? 記事を取得
認証
16
$response =
$api->authenticate(
array('username' => 'foo', 'password' => 'bar')
);
if (isset($response['error'])) {
認証に失敗したときの処理
}
認証に成功した時の処理
? 未公開情報の処理の際には認証が必要
データの作成
? create系のメソッド
17
オブジェクト メソッド
記事 createEntry
ウェブページ createPage
カテゴリ createCategory
フォルダ createFolder
データの作成
? パラメータ
? 親のIDとオブジェクトを表す連想配列
? 戻り値
? 成功すればそのオブジェクト
? 失敗すればエラー値
18
データの作成の例
19
$entry = array(
'title' => '記事のタイトル',
'body' => '記事の本文'
);
$response = $api->createEntry(サイトID, $entry);
if (isset($response['error'])) {
記事作成失敗時の処理
}
else {
記事作成成功時の処理
}
データの更新
? update系のメソッド
20
オブジェクト メソッド
記事 updateEntry
ウェブページ updatePage
カテゴリ updateCategory
フォルダ updateFolder
アイテム updateAsset
データの更新
? パラメータ
? 親のID/オブジェクトのID/オブジェクトを表
す連想配列
? 戻り値
? 成功すればそのオブジェクト
? 失敗すればエラー値
21
データの更新の例
22
$entry = array('title' => '更新後のタイトル');
$response =
$api->updateEntry(サイトID, 記事ID, $entry);
if (isset($response['error'])) {
記事更新失敗時の処理
}
else {
記事更新成功時の処理
}
データの削除
? delete系のメソッド
23
オブジェクト メソッド
記事 deleteEntry
ウェブページ deletePage
カテゴリ deleteCategory
フォルダ deleteFolder
アイテム deleteAsset
データの削除
? パラメータ
? 親のID/オブジェクトのID
? 戻り値
? 成功すれば削除されたオブジェクト
? 失敗すればエラー値
24
データの削除の例
25
$response = $api->deleteEntry(サイトID, 記事ID);
if (isset($response['error'])) {
記事削除失敗時の処理
}
else {
記事削除成功時の処理
}
Data API Library for VBAのご紹介
26
Movable Typeでありがちな話②
? ExcelやAccessで蓄えたデータをMovable Typeにイ
ンポートしたい
? でも既存のインポートプラグインでは
かゆいところに手が届かない…
? Movable Typeの記事等をExcelやAccessで処理し
たい
? クライアントがExcelに慣れすぎてMTの管理画面
を嫌がる
? VBAなら分かるけどPerlは苦手…
そんなあなたに
Data API
Library
For VBA
Data API Library for VBA
? VBA(Visual Basic for Applications)でData
APIを扱うライブラリ
? 基本的な仕組みはPHPライブラリと同様
? VBAでプログラムを組んでOfficeアプリと
Movable Typeを連携
? 以下からダウンロード
http://bit.ly/mt_dataapi_vba
デモをご覧ください
準備
? Excel等のファイルにライブラリを組み込む
? 参照設定
31
プログラミングの方式
? PHP用ライブラリと似た仕組み
? 以下のようにしてメソッドを実行
32
api.send("メソッド名", パラメータ)
初期化と認証
' 初期化
Set api = New MTDataAPI
api.init BASE, CLIENT_ID
' 認証
Set params = New Scripting.Dictionary
params("username") = USERNAME
params("password") = PASSWORD
Set response = api.send("authenticate",
params)
記事作成
For i = 2 To 5
Set entry = New Scripting.Dictionary
entry("title") = Cells(i, 1).value
entry("body") = Cells(i, 2).value
entry("date") = api.convDate(Cells(i, 3).value)
Set response = api.send("createEntry",
SITE_ID, entry)
Next
注意点
35
注意点
? PHP版ではfile_get_contents関数を使える環境が
必要
? 同期処理
? レスポンスが返ってくるまで処理が停止
? 複数のData APIの組み合わせ処理ではオーバー
ヘッド大
? 実質的にPSGI必須
? 1回のリクエストで複数のAPIを処理できれば…(お
願い中の人)
36
まとめ
37
まとめ
? Data API Library for PHPでMovable Typeを
PHPで操作可能
? Data API Library for VBAでMovable Typeを
VBAで操作可能
? 同期処理を考慮してご利用は計画的に
38
ご清聴ありがとうございました
39

More Related Content

PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介