ワンクリック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点です。

  1. 設定ファイルからのIDとワンタイムパスワードの読み順を取得

  2. 取得した読み順を、WEBに表示される数字表の読み取り方に変換

  3. メインフローとサブフローの連携

1.設定ファイルからのIDとワンタイムパスワードの読み順を取得

 

kojinsetteiという新しいサブフローの前段です。

 ここでは、1~6行目で、kojin.xlsxというExcelの設定ファイルの存在を確認しています。フォルダが存在しない場合にフォルダを作成しているのは、kojin.xlsxが存在しない場合も含めて、新しく作成する改良も考えているからです。(未実装)とりあえず、kojin.xlsxが存在しない場合、警告を表示して終了します。
 ファイルが存在すれば、Sheet1から、ID情報、セルB1を読み取り「ExcelDataID」という変数に格納します。(8,9行目)


kojin.xlsxのSheet1 IDがB1に保存されている

 次に別シートのSheet2から、パスワードの読み方を取得し「ExcelData」という変数に格納します。
 下画像の様に、PassLogicの数字表を、横列12列をX、縦列4行をYとして表現し、読み順をA2からB9に事前に入力しておきます。今回は、前回の設定と同じ読み順なのですが、右の見本の黄網部分、G列を上から下に、次にL列を上から下に読むという入力です。(冒頭の動画は、もっと複雑な読み順に設定しています)

G列を上から、次にL列を上から読んでパスワードにしている。

2.取得した読み順を、WEBに表示される数字表の読み取り方に変換

前回作成したフローで、下図の数字表から、G列とL列の順で数字を読み出す場合です。

緑点枠を左上⇒左下⇒右上⇒右下に読む

メインフローで、数字表からパスワードを読み出す部分は、次の様になっていました。

数字表を読んで、「DataFromWebPage」という変数に格納
16行目の中身が左、詳細設定のクリックで右上「CSSセレクタ」が表示。「CSSセレクタ」の中身が右下

 この右下のCSSセレクタの文字列が、数字表から数字を読み出す位置を指定している肝になります。よく観察すると次の様な関係が見て取れます。

 どうでしょう、解るでしょうか?次の様な推定が出来ます。

  •  薄青で囲った部分の「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の数字の塊として扱っているため、このままでは利用できません。

ExcelDataの中身

これを、今のCSSセレクタの座標の読み方ルールに合わせる必要があります。

kojinsetteifサブフローの後段

 この14行目から20行目の処理で、「ExcelData」に保存している読み方を、WEBの構造に合わせた形に変形し「PassZahyo」という変数に保存し直します。

この変換がミソです

3.メインフローとサブフローの連携

メインフローで修正したのは、以下の3箇所です。

①サブフロー呼び出し行追加

2行目を追加、作ったサブフローを呼び出している

➁PassLogic数値表を出すためのIDを固定値から変数に変更

ID入力をサブフローで取得したExcelDataIDに変更

③CSSセレクタの変更

16行目データ抽出の中身を修正する

 先ほど作ったサブフローの成果物「PassZahyo」変数を使って、CSSセレクタの読み取り先を固定の数値から「PassZahyo」変数で表現します。

CSSセレクタの変更

E.フィードバック(というか失敗談)

 早速、同僚のPCに無理矢理セットアップして、テストして貰いたいところでしたが、休みやテレワークで、お願いできませんでした。
 しかし、現在のバージョンに先立って、実は個人の設定ファイルで、数字表の読み方を次の様な形式でも作成しました。

読み位置に読む順序を入力する形式

 設定ファイルとしては、こちらの方が解りやすくて優れていると思います。この場合、表全体を12行4列の配列に読み込むのは一瞬なのですが、8つのパスワード要素の座標を一つにまとめる必要があります。
次の様なフローを書きました。

ExcelDataという変数に一気に取得した表から、数字の入った座標をPassZahyoに
格納し直すフロー

 でも、残念でした。実はこのループは、1番目から8番目の数字を探すために8回、呼び出す必要があります。PADでの二重ループの実行は、遅すぎて実用になりませんでした。

 あれこれ考えて、現在の形の設定ファイルにしましたが、解りやすさで劣ります。今後の改良案として、初めて起動したときに、個人の設定ファイルを作成して保存する、1回だけ実行するフローとして作れば、多少待たされても意味があるかと考えています。


F.最後に

 今回の制作は、ワンクリックVPN接続を、他の人の環境にも移せる様に一般化しました。まだ、もっと使いやすく出来そうな部分はありますが、ひとまず、計画の第一段階が終了という感じです。
 なんの計画かというと、先の記事で取り上げた、自分の業務の自動化です。このワンクリックVPN接続は、社内ネットワークからデータを取得する際のサブフロー的な使い方を想定しています。もっと大きな自動化の一部として実用化しようと目論んでいます。
 企業秘密になる部分が多くなりますので、一般公開は出来ないかもしれませんが、比較的誰でも使っていただける小さなDXとして、今回の記事を参考に取り組まれる方が現れれば幸いです。


この記事が気に入ったらサポートをしてみませんか?