エクセルVBAでプリザンターから情報取得、シリーズ。第5回です。
前回まではVBAでエクスポートする基本、絞り込み条件の指定方法などをやりました。今回はデータ取得時に並べ替えもできちゃうそうなので、それをやってみようと思います。
なお、VBAでのエクスポートのやり方、フィルター条件のやりかたは割愛しますので、前回までの記事を参照してください。
※おことわり
2023年7月時点の情報です。プリザンターのバージョンは 1.3.20.0 です。Google Chrome でやっています。
javascript,html,cssともに初心者です。調べながら、やってみながら、きっとこうすればいいんだ!という感じで書いていますので、間違っている場合、効率的な書き方ではない可能性が大いにあります。間違ってるよ!とか、こうしたほうがいいよ!ということがありましたら、コメント等で教えていただけると大変ありがたいです。
1.使用するサイト
前回と同じです。
2.並べ替え ソート
こちらの記事を参考にしてやってみました。
開発者向け機能:JSONデータレイアウト:View
ColumnSorterHashの指定方法
引用元:https://pleasanter.org/manual/api-view
ソート順は asc(昇順)/desc(降順) のどちらかを指定します。
JSONでは{“項目名”:”ソート順”}のペア{“DateA”:”asc”, “ClassA”:”desc”}で指定します。
View で ColumnSorterHash を指定すると、並べ替えができるようです!昇順が asc、降順が desc ですね。
3.やってみた
(1)日付Aの昇順で並べ替えを指定
jsonRequest.Add "View", New Dictionary
jsonRequest("View").Add "ColumnSorterHash", New Dictionary
jsonRequest("View")("ColumnSorterHash").Add "DateA", "asc"
(2)分類A昇順、日付A降順
並べ替えの優先順位は、指定した順になるようです。以下の例では優先順位はClassAが1番目、DataAが二番目となります。
jsonRequest.Add "View", New Dictionary
jsonRequest("View").Add "ColumnSorterHash", New Dictionary
jsonRequest("View")("ColumnSorterHash").Add "ClassA", "asc"
jsonRequest("View")("ColumnSorterHash").Add "DateA", "desc"
4.絞り込み条件と、並べ替えを同時指定
分類Aが100、分類A昇順、日付A降順
jsonRequest.Add "View", New Dictionary
jsonRequest("View").Add "ColumnFilterHash", New Dictionary
jsonRequest("View")("ColumnFilterHash").Add "ClassA", "[""100""]"
jsonRequest("View").Add "ColumnSorterHash", New Dictionary
jsonRequest("View")("ColumnSorterHash").Add "ClassA", "asc"
jsonRequest("View")("ColumnSorterHash").Add "DateA", "desc"
5.コード全文
しつこいようですが、3の分類Aが100、分類A昇順、日付A降順でエクスポートするコード全文です。コピペして利用する際はapikey、サイトIDの部分は実際のapiキー、サイトIDに変更してください。
Sub pleasanter_export6()
Const myApikey As String = "1234abcde" '実際のapiキーに変更してください
Dim jsonRequest As Dictionary
Dim parseResponse As Dictionary
Dim httpRequest As Object
Set jsonRequest = New Dictionary
jsonRequest.Add "ApiVersion", "1.1"
jsonRequest.Add "ApiKey", myApikey
'******* ここからフィルターを設定 ************
jsonRequest.Add "View", New Dictionary
jsonRequest("View").Add "ColumnFilterHash", New Dictionary
'jsonRequest("View")("ColumnFilterHash").Add "ClassA", "[""100""]"
jsonRequest("View").Add "ColumnSorterHash", New Dictionary
jsonRequest("View")("ColumnSorterHash").Add "ClassA", "asc"
jsonRequest("View")("ColumnSorterHash").Add "DateA", "desc"
'**************** ここまで *******************
Set httpRequest = CreateObject("msxml2.xmlhttp")
'426は実際のサイトIDに変更してください
httpRequest.Open "POST", "http://localhost/api/items/426/get"
httpRequest.setRequestHeader "Content-Type", "application/json;charset=utf-8"
httpRequest.send JsonConverter.ConvertToJson(jsonRequest)
Do While httpRequest.readyState < 4
DoEvents
Loop
Set parseResponse = JsonConverter.ParseJson(httpRequest.responseText)
If parseResponse("Response")("Data").Count <= 0 Then
MsgBox "なし"
Exit Sub
End If
Dim responseData As Variant
Dim i As Long: i = 2
For Each responseData In parseResponse("Response")("Data")
With ActiveSheet
.Cells(i, 1).Value = responseData("Title")
.Cells(i, 2).Value = responseData("ClassHash")("ClassA")
.Cells(i, 3).Value = responseData("ClassHash")("ClassB")
.Cells(i, 4).Value = responseData("ClassHash")("ClassC")
End With
i = i + 1
Next
MsgBox "出力完了"
End Sub
6.さいごに
コツをつかんでしまうと簡単ですね!
7.参考記事など
プリザンザンターVBAエクスポートシリーズ
【pleasanter/VBA】エクセルからプリザンターのデータを取得する
【pleasanter/VBA】エクセルからプリザンターのデータを取得する②絞り込み条件の指定
【pleasanter/VBA】エクセルからプリザンターのデータを取得する③変数で絞り込み条件を指定する
【pleasanter/VBA】エクスポート④絞り込み条件で〇〇を含むを指定する
【pleasanter/VBA】エクスポート⑤並べ替え(今回)
【pleasanter/VBA】エクスポート⑥表示名を出したい
【pleasanter/VBA】エクスポート⑦データがちょん切れる時の対応 Offset
【pleasanter/VBA】エクスポート⑧出力される日付を文字列ではなく日付時刻型で出したい
【pleasanter/VBA】エクスポート⑨汎用ツールを作ってみた
【pleasanter/VBA】エクスポート⑩汎用ツール増強版
VBAでインポート
【pleasanter/VBA】エクセルからプリザンターへデータを追加、更新する~import~
プリザンターPowerQuery連携シリーズ
【pleasanter/PowerQuery】プリザンターの情報をパワークエリで取得する①
【pleasanter/PowerQuery】プリザンターの情報をパワークエリで取得する②取得条件の指定方法
【pleasanter/PowerQuery】プリザンターの情報をパワークエリで取得する③上限値以上のレコードを連続で取得する
【pleasanter/PowerQuery】プリザンターの情報をパワークエリで取得する④ユーザーテーブルとマージ
コメント