ワンクリックVPN接続改
AnyConnectのVPN接続をワンクリック化(By Power Automate Desktop)その2
本記事は、前記事の続編に相当します。
A.概要
前記事で作成したPower Automate Desktopのフローは、テレワーク時にワンクリックで社内ネットにVPN接続してくれる物でした。しかし、PassLogicという数字表の読み出し方が、設定済みの1パターンしかなかったため、他の人に実際に試して貰う事ができませんでした。
今回は、予め別ファイルに個人の設定ファイルを用意することで、他の人でも簡単に試して貰える様に改良しました。
B.実際の動作状況
C.使用したツール(前回と同じ)
Power Automate Desktop :MS謹製 RPAツール
Any Connect :Cisco製 VPN接続アプリ
PassLogic :ワンタイムパスワード
D.制作のツボ
前回のフローをメインフローとすると、メインフローに追記修正したのは、わずか3行で、新しくkojinsetteiというサブフローを作成しました。
新しい部分の要素は以下の3点です。
設定ファイルからのIDとワンタイムパスワードの読み順を取得
取得した読み順を、WEBに表示される数字表の読み取り方に変換
メインフローとサブフローの連携
1.設定ファイルからのIDとワンタイムパスワードの読み順を取得
![](https://assets.st-note.com/img/1666017283681-Z1oPIF56w5.png?width=1200)
ここでは、1~6行目で、kojin.xlsxというExcelの設定ファイルの存在を確認しています。フォルダが存在しない場合にフォルダを作成しているのは、kojin.xlsxが存在しない場合も含めて、新しく作成する改良も考えているからです。(未実装)とりあえず、kojin.xlsxが存在しない場合、警告を表示して終了します。
ファイルが存在すれば、Sheet1から、ID情報、セルB1を読み取り「ExcelDataID」という変数に格納します。(8,9行目)
![](https://assets.st-note.com/img/1666018152346-a8osxZAfNv.png)
次に別シートのSheet2から、パスワードの読み方を取得し「ExcelData」という変数に格納します。
下画像の様に、PassLogicの数字表を、横列12列をX、縦列4行をYとして表現し、読み順をA2からB9に事前に入力しておきます。今回は、前回の設定と同じ読み順なのですが、右の見本の黄網部分、G列を上から下に、次にL列を上から下に読むという入力です。(冒頭の動画は、もっと複雑な読み順に設定しています)
![](https://assets.st-note.com/img/1666018861959-9JajCXdNH3.png?width=1200)
2.取得した読み順を、WEBに表示される数字表の読み取り方に変換
前回作成したフローで、下図の数字表から、G列とL列の順で数字を読み出す場合です。
![](https://assets.st-note.com/img/1666019592181-e03tAkAUdJ.png?width=1200)
メインフローで、数字表からパスワードを読み出す部分は、次の様になっていました。
![](https://assets.st-note.com/img/1666019837541-bwdLtbsdma.png?width=1200)
![](https://assets.st-note.com/img/1666020061500-IVbkyUDji7.png?width=1200)
この右下のCSSセレクタの文字列が、数字表から数字を読み出す位置を指定している肝になります。よく観察すると次の様な関係が見て取れます。
![](https://assets.st-note.com/img/1666020427737-NXz03sUtem.png?width=1200)
どうでしょう、解るでしょうか?次の様な推定が出来ます。
薄青で囲った部分の「td:eq(※)」が、数字表の4×4の塊三つを左から0,1,2で指定しています。
黄で囲った部分の「tr:eq(※)」で、1つの4×4の塊の行位置を0,1,2,3で指定しています。
紫で囲った部分の「td:eq(※)」で4×4の塊の列位置を0,1,2,3で指定しています。
先の1.で読み取ったExcelDataという変数は、下の様な形でデータを保持しています。三つの4×4の数字の塊ではなく、12×4の数字の塊として扱っているため、このままでは利用できません。
![](https://assets.st-note.com/img/1666021087317-h2lWGzGVOG.png)
これを、今のCSSセレクタの座標の読み方ルールに合わせる必要があります。
![](https://assets.st-note.com/img/1666021270883-PieyIJZmb7.png?width=1200)
この14行目から20行目の処理で、「ExcelData」に保存している読み方を、WEBの構造に合わせた形に変形し「PassZahyo」という変数に保存し直します。
![](https://assets.st-note.com/img/1666021717371-q698mAlLdC.png)
3.メインフローとサブフローの連携
メインフローで修正したのは、以下の3箇所です。
①サブフロー呼び出し行追加
![](https://assets.st-note.com/img/1666022082316-1cB6AY8IsS.png?width=1200)
➁PassLogic数値表を出すためのIDを固定値から変数に変更
![](https://assets.st-note.com/img/1666023462860-3CuLaKRcft.png?width=1200)
③CSSセレクタの変更
![](https://assets.st-note.com/img/1666023331755-xTdlBhwxSj.png?width=1200)
先ほど作ったサブフローの成果物「PassZahyo」変数を使って、CSSセレクタの読み取り先を固定の数値から「PassZahyo」変数で表現します。
![](https://assets.st-note.com/img/1666023288885-oecUyvNh3m.png?width=1200)
E.フィードバック(というか失敗談)
早速、同僚のPCに無理矢理セットアップして、テストして貰いたいところでしたが、休みやテレワークで、お願いできませんでした。
しかし、現在のバージョンに先立って、実は個人の設定ファイルで、数字表の読み方を次の様な形式でも作成しました。
![](https://assets.st-note.com/img/1666091807233-OJ2rT74610.png?width=1200)
設定ファイルとしては、こちらの方が解りやすくて優れていると思います。この場合、表全体を12行4列の配列に読み込むのは一瞬なのですが、8つのパスワード要素の座標を一つにまとめる必要があります。
次の様なフローを書きました。
![](https://assets.st-note.com/img/1666092253506-KNOh0J95wu.png)
格納し直すフロー
でも、残念でした。実はこのループは、1番目から8番目の数字を探すために8回、呼び出す必要があります。PADでの二重ループの実行は、遅すぎて実用になりませんでした。
あれこれ考えて、現在の形の設定ファイルにしましたが、解りやすさで劣ります。今後の改良案として、初めて起動したときに、個人の設定ファイルを作成して保存する、1回だけ実行するフローとして作れば、多少待たされても意味があるかと考えています。
F.最後に
今回の制作は、ワンクリックVPN接続を、他の人の環境にも移せる様に一般化しました。まだ、もっと使いやすく出来そうな部分はありますが、ひとまず、計画の第一段階が終了という感じです。
なんの計画かというと、先の記事で取り上げた、自分の業務の自動化です。このワンクリックVPN接続は、社内ネットワークからデータを取得する際のサブフロー的な使い方を想定しています。もっと大きな自動化の一部として実用化しようと目論んでいます。
企業秘密になる部分が多くなりますので、一般公開は出来ないかもしれませんが、比較的誰でも使っていただける小さなDXとして、今回の記事を参考に取り組まれる方が現れれば幸いです。
この記事が気に入ったらサポートをしてみませんか?