前々回、プリザンターのデータをエクセルから取得する
そして前回、プリザンターのデータを絞り込み条件を付けてエクスポートする、をやりました。
今回はその絞り込み条件を変数を使ってやってみたいと思います。
なお、VBAでのエクスポートのやり方、フィルター条件のやりかたは割愛しますので、前回、前々回の記事を参照してください。
※おことわり
2023年7月時点の情報です。プリザンターのバージョンは 1.3.20.0 です。Google Chrome でやっています。
javascript,html,cssともに初心者です。調べながら、やってみながら、きっとこうすればいいんだ!という感じで書いていますので、間違っている場合、効率的な書き方ではない可能性が大いにあります。間違ってるよ!とか、こうしたほうがいいよ!ということがありましたら、コメント等で教えていただけると大変ありがたいです。
1.使用するサイト
前回と同じです
2.分類項目のフィルター条件を変数で指定する
分類項目は以下のように指定していました。
jsonRequest("View")("ColumnFilterHash").Add "ClassA", "[""100""]"
jsonRequest("View")("ColumnFilterHash").Add "ClassC", "[""セット""]"
条件を変数に入れてやると、まあ、こうですよね。
Dim strA As String, strC As String
strA = "[""100""]"
strC = "[""セット""]"
'途中省略
jsonRequest("View")("ColumnFilterHash").Add "ClassA", strA
jsonRequest("View")("ColumnFilterHash").Add "ClassC", strC
では、以下のような複数指定するときは
jsonRequest("View")("ColumnFilterHash").Add "ClassA", "[""100"",""300"",""500""]"
Dim strA As String, strC As String
strA = "[""100"",""300"",""500""]"
jsonRequest("View")("ColumnFilterHash").Add "ClassA", strA
では、値のみ変数に取るときは、こうやったらできました。
Dim bufA As String, bufC As String
bufA = "100"
bufC = "セット"
jsonRequest("View")("ColumnFilterHash").Add "ClassA", "[""" & bufA & """]"
jsonRequest("View")("ColumnFilterHash").Add "ClassC", "[""" & bufC & """]"
ダブルクォーテーション多っ!直指定の時の “[“”100″”]” より多いですね。
[” を表したい
文字列なのでダブルクォーテーションで囲む=> “[““
真ん中の ” はただの文字列としたいので エスケープ文字 “ を入れる => “[“““
というわけで、ダブルクォーテーションがやたら増えるわけですね。
イミディエイトウインドウでみてみると、結果的にはすっきりした文字列になっていますね。
しかし、実は値で指定した分類Aの方は、以下のようにダブルクォーテーションなしでも行けました。
Dim bufA As String, bufC As String
bufA = "100"
bufC = "セット"
jsonRequest("View")("ColumnFilterHash").Add "ClassA", "[" & bufA & "]"
jsonRequest("View")("ColumnFilterHash").Add "ClassC", "[""" & bufC & """]"
では、”[“”100″”,””300″”,””500″”]” は?
値の場合は以下のどちらでも行けました。
Dim buf1 As String, buf2 As String, buf3 As String
buf1 = "100"
buf2 = "300"
buf3 = "500"
Dim str As String
str = "[""" & buf1 & """,""" & buf2 & """,""" & buf3 & """]" '①
str = "[" & buf1 & "," & buf2 & "," & buf3 & "]" '②
'①でも②でもOK
jsonRequest("View")("ColumnFilterHash").Add "ClassA", str
3.数値項目のフィルター条件を変数で指定する
数値の場合は以下のように指定していました。
条件 | 指定方法 |
---|---|
10に等しい | “[10]” |
10または20 | “[10,20]” |
100以下 | “[“”,100″”]” |
100以上 | “[“”100,””]” |
100以上200以下 | “[“”100,200″”]” |
(1)数値Aが1000に等しい
Dim str As Long: str = "[1000]"
jsonRequest("View")("ColumnFilterHash").Add "NumA", str
または
Dim num As Long: num = 1000
jsonRequest("View")("ColumnFilterHash").Add "NumA", "[" & num & "]"
(2)数値Aが1000以上
Dim str As String
str = "[""1000,""]"
jsonRequest("View")("ColumnFilterHash").Add "NumA", str
または
Dim num As Long
num = 1000
jsonRequest("View")("ColumnFilterHash").Add "NumA", "[""" & num & ",""]"
(3)数値Aが1000以上、2000以下
Dim str As String
str = "[""1000,2000""]"
jsonRequest("View")("ColumnFilterHash").Add "NumA", str
または
Dim num1 As Long, num2 As Long
num1 = 1000
num2 = 2000
jsonRequest("View")("ColumnFilterHash").Add "NumA", "[""" & num1 & "," & num2 & """]"
4.チェック項目のフィルター条件を変数で指定する
チェックAがチェックオン(TRUE)、チェックBがチェックオフ(FALSE)
Dim flgA As Boolean: flgA = True
Dim flgB As Boolean: flgB = False
jsonRequest("View")("ColumnFilterHash").Add "CheckA", flgA
jsonRequest("View")("ColumnFilterHash").Add "CheckB", flgB
5.日付項目のフィルター条件を変数で指定する
日付項目は以下のように指定していました。
条件 | 指定方法 |
---|---|
2023/6/10 | “[“”2023/06/10 00:00:00,2023/06/10 23:59:59″”]” |
2023/6/10~2023/6/15 | “[“”2023/06/10 00:00:00,2023/06/15 23:59:59″”]” |
2023/6/20以降 | “[“”2023/06/20 00:00:00,””]” |
2023/6/20以前 | “[“”,2023/06/20 23:59:59″”]” |
(1)6/10に等しい
変数が文字列
Dim strDate As String
strDate = "[""2023/06/10 00:00:00,2023/06/10 23:59:59""]"
jsonRequest("View")("ColumnFilterHash").Add "DateA", strDate
変数が日付
Dim date1 As Date
date1 = #6/10/2023#
Dim strDate As String
strDate = "[""" & date1 & " 00:00:00," & date1 & " 23:59:59""]"
jsonRequest("View")("ColumnFilterHash").Add "DateA", strDate
変数が文字列2
Dim date1 As String
date1 = Format(Now(),"yyyy/mm/dd")
Dim strDate As String
strDate = "[""" & date1 & " 00:00:00," & date1 & " 23:59:59""]"
jsonRequest("View")("ColumnFilterHash").Add "DateA", strDate
(2)6/10の10時から14時の間(14時は含まない)
変数が文字列
Dim strDate As String
strDate = "[""2023/06/10 10:00:00,2023/06/10 13:59:59""]"
jsonRequest("View")("ColumnFilterHash").Add "DateA", strDate
または
Dim date1 As Date, date2 As Date
date1 = #6/20/2023 10:00:00 AM#
date2 = #6/25/2023 11:59:50 PM#
jsonRequest("View")("ColumnFilterHash").Add "DateA", "[""" & date1 & "," & date2 & """]"
または
Dim date1 As Date, date2 As Date
Dim strDate1 As Date, strDate2 As Date
date1 = #6/20/2023 10:00:00 AM#
date2 = #6/25/2023 11:59:50 PM#
strDate1 = Format(date1, "yyyy/mm/dd hh:nn:ss")
strDate2 = Format(date2, "yyyy/mm/dd hh:nn:ss")
jsonRequest("View")("ColumnFilterHash").Add "DateA", "[""" & strDate1 & "," & strDate2 & """]"
6.最後に
今回は以上になります。最初のうちは戸惑いましたが、前回やった条件指定の基本を押さえると大丈夫ですね。
7.参考文献
これを見ながらやりました
開発者向け機能:JSONデータレイアウト:View
https://pleasanter.org/manual/api-view
プリザンザンター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】プリザンターの情報をパワークエリで取得する④ユーザーテーブルとマージ
コメント