UiPathの入力ダイアログで初期値をいれたり複数選択するようにする方法

前回のUiPathで「名前を付けて保存」ダイアログを表示する | while(isプログラマ)のつづき。

いつも最初のURLの入力に「am-yu.net」と入力するのが何気に面倒なので、初期値で「am-yu.net」といれることにします。ついでに、並び順や取得数の変更もできるように変更します。

まず、URLのデフォルト値を入れる変数を作成します。この時、変数の型はString型ではなく、Stringの配列型を選んでください。

この変数は、既定値として「{“am-yu.net”}」と設定し、入力ダイアログのオプションに設定します。

そうすると、下記のような感じでデフォルトで「am-yu.net」と入るようになりました。

ちなみに、上記で設定した入力ダイアログのオプションですが、配列の中身を2つ~3つにするとラジオボタンの選択式になります。とりあえず今回は、並び順の変更をできるようにします。sortListというString型配列変数を設定して既定値として、「”人気”,”新着”,”すべて”}」とし、結果をsortKindという変数にいれます。

そうすると、下記のように入力ダイアログがラジオボタンの選択式となりました。ただ、デフォルトの選択はできないようで、何も選択せずにOKを押すと結果にはnullが入ります(既定値のままではないようです)。

ちなみに、配列の中身が4つ以上だとプルダウンリストとなります。とりあえず今回は取得する数を変更できるようにします。pageNumListというString型配列を作成して既定値を「{“10″,”50″,”100″,”200”}」に、結果をpageNumという変数にいれます。数値型の配列でもいけるかなと思って試したのですが、String型じゃないとダメでした。

そうすると、下記のようにプルダウンリストの選択式となりました。ただ、やっぱりこれもデフォルト値は選べず。

後は他に必要なことを実装していきます。とりあえず、並び順は日本語名ではなく、URLに指定するプロパティ値として取得したいので、スイッチアクティビティでダイアログで選択した並び順によって、プロパティ値を設定するようにします。まず、スイッチアクティビティのTypeArgumentをStringに変更し、式に「sortKind.ToString」と設定します。その後、今回は、sortPropという変数を作成し、”人気”なら「sortProp = “count”」、”新着”なら「sortProp = “”」、”すべて”かDefaultの場合は「sortProp = “eid”」としました(どうでもいいけど、なぜかCaseの中に代入アクティビティを入れると、表示名が「代入」ではなく、英語の「Assign」となった)

もちろん、開くURLの設定も、「”http://b.hatena.ne.jp/entrylist?url=” & url.ToString() & “&sort=” & sortProp」と変更します。

つづいて、構造化データを抽出用のアクティビティの結果の最大数に「CInt(pageNum)」と設定します。CIntというのは、引数の値を整数型に変換して返す関数です。

これで、うまくいくはずです。実行して並び順に「人気」を選択し、取得数に「10」を選択します。

ただ、ここで問題が。動きはしたのですが、「人気」を選択したのになぜか「すべて」のページで実行されました。

今回作成したプログラムにはバグがあります。スイッチアクティビティのCaseの文字列にはなんと、ダブルクォーテーションをつけてはいけません。最初にスイッチアクティビティを使った時にここで悩みました。なので、sortList(0)というような変数も使えません(変数名がCaseの文字列だと思われる)。この仕様は非常に分かりづらかったです。マニュアルにも書いてないし……(参考:Switch)。

というわけで先ほどと同じように実行すると、今度は無事、人気の並び順でスクレイピングしてくれました。

結果も10件のみとなっています。

ただ、やっぱり入力ダイアログの複数選択時は既定値設定がほしいです。後、複数回ダイアログを出さなきゃいけないのも微妙かもしれません。そんな時に役立つのが「カスタム入力」というアクティビティですが、この話は次回します。このアクティビティを知ったときは結構衝撃的でした。

コメント

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