「csvファイル→変数値」はCSVのブランク列以降を拾ってくれない
「csvファイル→変数値」や「繰り返し終了」でバグを疑う挙動に遭遇しました。
どうやらわたしが「csvファイル→変数値」の仕様を誤認していたようです、、
わたしみたいな横着派がハマるポイントだと思うので、お裾分けです。
長いです。
「常識でしょ」と思われたら、それ以降はあまり読む価値がない情報です。
症状
- 「csvファイル→変数値」で変数が初期化されないことがある
検証で特定した仕様
- 「csvファイル→変数値」で使うデータ一覧形式のCSVファイルは、1行目がブランクになる手前の列までをデータ範囲として認識する
症状で困った経緯
- 「csvファイル→変数値」を変数の一括初期化目的で使っている
- CSVファイルは変数一覧画面からエクスポートするのがラク
- 変数が増えると、CSVファイルにも追加が必要
- システムのアカウントやファイル/フォルダパス等の初期化しないグループは、Excelで開いて5行目とかに避けていた
- 避ける変数は、変数一覧画面で最下部にまとめてない
- たとえば100個の変数のうち、H:N、V:Zを5行目に避けていた
- すると、、「csvファイル→変数値」で初期化されるのはG列の変数まで、、
- H列以降は永遠に初期化されないこととなる
気づくのが遅れた背景
- 避ける列を変数一覧でグループごと最下部にして、エクスポートしたCSVがExcel上で右にまとまるようにしていたこともあった
- シナリオのループサイクルで、何サイクルでも正常に処理できていた、、途中でスキップフラグが立つまでは、、
- 正常に処理できていたのは、次のサイクルで変数が正常に上書かれていたから
- ひと度スキップフラグが立つと、次のサイクル以降、正常に処理できる案件もひたすらスキップされ続ける、、
テスト01
データ一覧形式の「変数01.csv」
変数A,変数B,変数C
aaaaa,bbbbb,ccccc
シナリオ
繰り返し
csvファイル→変数値:変数01.csv、1
待機ボックス①
変数値設定:変数A、AAAAA
変数値設定:変数B、BBBBB
変数値設定:変数C、CCCCC
待機ボックス②
実行結果
- 待機ボックス①で変数値にそれぞれ小文字がセットされる
- 待機ボックス②で変数値がそれぞれ大文字になる
- 以降、待機ボックス①で小文字にリセットされる(想定通り)
テスト02
データ一覧形式の「変数02.csv」
B1:B2をB5:B6に移動(B1:B2はブランク)
変数A,,変数C
aaaaa,,ccccc
,,
,,
,変数B,
,bbbbb,
実行結果
- 待機ボックス①で変数Aだけに小文字がセットされた!(想定外!)
- 待機ボックス②で変数値がそれぞれ大文字になる
- 以降、待機ボックス①で変数Aだけが小文字にリセットされる(想定外!)
仕様を特定してずっと正常に処理できるようになった現在の思い
- よーく考えればそんな仕様と想像できても良さそう
- 常識の範囲と言われればそれまで、、
- ないデータの分まで場所を取ってたら、メモリの効率が悪いだろうし
- Ver.6系までの経験で、1行目の変数名がありさえすれば良いと思い込んでいた
- Ver.6系で列を飛ばして読み込まれていたかどうかまでは、まだ特定していない
- 改めてVer.7系のマニュアルを読み返したものの、「データ一覧形式」の定義に関する記述は見つけられず、、
ユーザライブラリサンプル説明書
csvファイル→変数値
データ一覧形式のファイルを読み込んで変数に反映します。
WinActor操作マニュアル内の「データ一覧形式」に相当する表現
表形式データ
雛形ファイル
ループ実行で扱えるデータ形式
雛形ファイルの1行目には変数名、2行目には変数の初期値が出力されます
データ一覧用のファイル
読み込み可能なデータ形式
読み込み可能なデータファイルは、Excel形式またはCSV形式
データ一覧のデータ
Excelファイルを使った初期化(表形式)
データ一覧を使った変数の初期化
- ※ どうやらVer.7系では、ユーザライブラリサンプル説明書の「データ一覧形式」相当は、WinActor操作マニュアルで「表形式」と表記されている模様
簡易マニュアル内の関連箇所
データ一覧でExcelやCSVを読み込むと、ExcelやCSVファイルの1行目の項目名が変数名と対応づけられます。
公式のFAQで「データ一覧」を検索しても定義らしき記述見当たらず
マニュアルには載ってなさそうな仕様に関する代理店さんのFAQ
データ一覧で扱えるデータの上限を教えてください。 – WinActorに関するよくあるお問い合わせ
https://winactor.jp/faq/?p=719
- 途中に空列を含める、わたしのような使いかたがNGいう考えに至る情報ではない、、
- 「csvファイル→変数値」でも、256個の変数分しか初期化できないかも、、
繰り返し
待機ボックス
csvファイル→変数値:変数a.csv、300変数、数字のみ
待機ボックス
csvファイル→変数値:変数1.csv、300変数、半角英字のみ
待機ボックス
- ひとまず300変数は初期化できた
- 「csvファイル→変数値」のCSVには256の上限は該当しないということか
- もしくは、代理店さんのFAQはVer.6までの情報なのかも
https://winactor.biz/docs/WinActor_v6_v7_releasenote.pdf#page=26
(以下、当初予定していた質問内容)
CSVとかでまとめての抽出が叶わない複数のWebシステムです。
データを抽出してCSVに溜め込むシナリオで、思わぬ挙動に苦戦中です。
助けてください。
メッセージAAAが表示されたサイクル以降で、AAAのサイクルの変数の値を引きずっちゃいます、、
鋭意デバッグ中ですが、AAAが表示された場合に★を辿って■に進んじゃいます、、
▲の「サブルーチン終了」が機能してないようです、、
ケアレスミスだとは思うんですが、、
Win10
WinActor630/7211で同じ挙動
シナリオ抜粋
繰り返し
csvファイル→変数値:8割の変数を初期化
サブルーチンX
分岐:スキップフラグ 等しくない スキップ
True
サブルーチンY
Fasle
何も置かない
取得した変数値をCSVファイルに1行追加
ログ出力:処理結果やスキップ理由
サブルーチンX
例外処理
正常系
値の取得:メッセージ★
異常系
何も置かない
分岐:メッセージ 等しい AAA
True
変数値設定:スキップフラグ、スキップ
変数値設定:処理メモ、AAA★
検索画面に戻るサブルーチン★
サブルーチン終了▲
False
何も置かない
待機ボックス(仮置き)■
以下、値の一括取得が続く■
※ 実際にはサブルーチンはもっと複雑に入り組んでいる
ログ出力の状況
- スキップのサイクルでは、スキップフラグとスキップ理由もログに残る
- 次のサイクル以降では、有無を言わさずスキップフラグと、前回スキップした理由が残る
新しいシナリオファイルのサンプルで検証
変数値設定
繰り返し
csvファイル→変数値①
サブルーチンA呼び出し②
サブルーチンA
変数値設定③
分岐④
True
待機ボックス⑤
サブルーチンB呼び出し⑥
サブルーチン終了⑧
False
待機ボックス
待機ボックス
変数値設定
サブルーチンB
待機ボックス⑦
- ①~⑧がループする
- サブルーチン終了は正常に機能してるみたい