スポンサーリンク

【pleasanter/VBA】エクスポート③変数で絞り込み条件を指定する

プリザンター
スポンサーリンク
※当サイトは広告を含みます

前々回、プリザンターのデータをエクセルから取得する
そして前回、プリザンターのデータを絞り込み条件を付けてエクスポートする、をやりました。

今回はその絞り込み条件を変数を使ってやってみたいと思います。
なお、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~

コメント

タイトルとURLをコピーしました