2022年6月11日土曜日

Power Automata Desktop 始めました

 VBAによるMS Edgeのscrapingができない※ためPower Platformを試してみることにしました。

(※一応、MSWedbdriverとTinySeleniumBasicとJSONcomberterを使って対応しているのですけれど、標準機能だけでできないのかなと)

出来そうなのはPower BIとPower Automata Desktopか。
Power BIは会社がlicense契約していない模様。
Power Automata Desktopはlicenseに含まれていると表示されるけど別アプリですね。
まあ、しゃあないか。

program時にいくつか悩んだので覚書です。

1) booleanの取り扱い

 変数の型宣言ができず、自動判定されるようです。

 演算で型が合わないとerrorになって実行開始すらできません。
 演算結果を入力した変数をmessage boxで表示すると

 True False

 なのですけれど、これを値に記入するとstringと判定されます。

 変数をtrueとかfalseに設定するには、

 %True% %False%

 を値に記入すれば所望の動作が得られました。

2) null stringの取り扱い

 stringをnullに設定するのに、値が空欄だと怒られます。
 こちらは値に

 %""%

 を記入すれば所望の動作が得られました。

3) 要素の存在確認

 actionに"Webに次が含まれる場合"というのがあります。
 条件として、要素を含む/含まない、テキストを含む/含まない が選択できます。
 テキストの場合は良いのですが、要素の場合は、partsに要素のURLも含まれて表示されます。
 試してみると別のWeb Pageでもとりあえず有無判定できるのですが、気持ち悪い。
 うまくいかないときもあり、何をもって含まれると判断しているのかよく分かりません。
 そこで、"WebページでJavaScript関数を実行します"を用いて結果を変数に返すことにしました。

 function ExecuteScript() {
  return (document.getElementById("XXX") != NULL);
 }

とかですね。

 ちなみに、"Webページのボタンを押す"(actionにないけどrecordで生成される)みたいなやつも要素にURLが含まれており、別pageで実行してもうまくいかないので、JavaScriptを使用しました。(今回うまくいかなったのはreload)

4) code

 desktopアプリでないものとはprogram画面が異なりますね。統一環境ではなさそう。
 desktopアプリではprogramしたactionを選択(複数可)してcopyし、memoなどにpasteするとtext codeが貼り付けられます。
 逆も同様で、text codeをcopyしてdesktopアプリに貼りつけるとactionになります。
 いちいちactionを配置するより、textでcodingして貼り付けたほうが楽じゃね?
 文字の大きさとかも変えられるし。(desktopアプリだと文字が小さすぎて読みにくい)

-----

さて、所感を。

値を設定する時に変数を選択すると変数名が%で囲われるのですが、変数ごとに%で囲うのではなく、全体を%で囲うことになっており、%% 内は演算となる仕様のようです。

であれば、1)は%%内に演算結果を書けばよいはず。
ということで、%1=1%とか%1=0%とか書いてみたらTrueとかFalseとかになりました。
で、もう一歩進めて%ture%とか%false%とか書いてみたらうまくいった次第です。

2)は、net検索すると、入力値を設定しない入力変数を設定する方法がhitしました。
これだと実行時に入力boxが表示されて空のままOKしないといけないので面倒です。
これも、1)と同様に行けんじゃね?
と思い%null%と書いてみたのですが"変数nullが存在しません"と怒られました。
それでは演算結果をnull stringにするには?
%""%で良いですね。%’’%のほうが素直なのか?

しかし、Web pageの要素をどう判定しているのかよくわからず。
"Webページの要素の詳細を取得します"も、選択肢が”Own Text”, "Title", "source link", "HRef","exists"しかないです。
結局、javascriptで最初から書けばよいんじゃないか、とか思いました。

さて、次は出力をどうするかが課題です。
Excelだと楽だったのですけれど。ExcelからPADを実行して結果を受け取れるのだろうか?
逆に、PADからExcelのVBAを起動して値を渡すのはできそう。でも前者もやりたい。
最終的には結果をまとめてWeb pageに表示したい。BIならできるのかな?

今回は以上です。

0 件のコメント:

コメントを投稿