本記事では、Power Automate Desktopを使ったWeb打刻の完全自動化を実現するための方法を紹介します。ブラウザ自動化というとSeleniumが有名ですが、RPAツールの利用でプログラミングをすることなく自動化を実現します。
PADで打刻を自動化させたい
今回自動化させるWebページは、ログイン画面でユーザー名とパスワードを入力しログイン後、打刻画面で「出勤」「退勤」等のボタンを押すようなつくりとします。出勤時と退勤時にそれぞれ「出勤」ボタンと「退勤ボタン」を自動で押下できるようにします。
・ログイン画面
・打刻画面
PADで自動打刻フローの作成
では早速フローを作っていきましょう。
Power Automate Desktopで新しいフローを作成
Power Automate Desktopを起動したら、画面左上の「新しいフロー」を押下します。
フロー名は何でもOKですが、あとで一覧で見たときに分かりやすい名前にしておくと良いです。
「作成」を押下すると、フローの編集画面が開きます。
左側に表示されているものは「アクション」といい、これらをドラッグ&ドロップで真ん中に持ってくることでフローを組み立てていきます。
フローにアクションを追加していく
まず、打刻システムのログイン画面でユーザー名とパスワードを入力してログインするフローを作成します。
フローを実現するための観点
どのアクションを使えば良いのかを考えるときには、ふだん自分でログインを行うときの動作を一つひとつ細分化して考えてみます。
- ブラウザを開く(ログイン画面のURLを指定して開く)
- ユーザーIDを入力する
- パスワードを入力する
- 「ログイン」ボタンを押す
- 「出勤」ボタンもしくは「退勤」ボタンを押す
実際に上記のステップをPower Automate Desktopのフローにしていきましょう。
アクションの追加と設定
ブラウザを開く
該当のアクションがどこにあるか検討が付く場合には左側のメニューから選んでも良いですし、
アクションが見つからない場合には検索窓からやりたいことを検索してみると見つかるかと思います。
アクションをドラッグ&ドロップで追加すると、以下のような設定モーダルが開きます。
「初期URL」という欄に、打刻システムのログイン画面のURLを設定して「保存」を押下します。
ユーザーID、パスワードを入力する
「2.ユーザーIDを入力する」と「3.パスワードを入力する」は、どちらもテキストボックスに入力するということで同じアクションが使えます。
ブラウザー自動化>Webフォーム入力>「Webページ内のテキスト フィールドに入力する」を使います。
先程追加したアクションの下に置きます。もし、フローを作成していくなかで、途中に新しくアクションを追加したいというときには、以下のように追加したい場所にドラッグ&ドロップすれば追加できます。
「Webページ内のテキスト フィールドに入力する」を追加して、UI要素にカーソルを当てると「表示するUI要素はありません」という文言とともにUI要素の追加ボタンが表示されますのでそれを押します。
すると、UI要素ピッカーというモードになりますので、これで直接画面のどの部品に入力操作を行うのかを指定することができます。
以下はマネーフォワードさんのクラウド勤怠の画面(https://attendance.moneyforward)ですが、
Ctrl+マウスクリックでUI要素が選択されます。
テキストボックスに入力したい内容を「テキスト」の部分に入力します。
ログインボタンを押す
最後に「4.ログインボタンを押す」のアクションを作成します。これで動作確認してみると、ユーザーIDとパスワードを入力して「ログイン」ボタンを押すまでを自動化することができているかと思います。
「出勤」「退勤」ボタンを押す
次に、出勤/退勤ボタンを押すアクションを追加します。
ここで、改めて実現したいことを確認しましょう。やりたいのは、「出勤」ボタンもしくは「退勤ボタン」を押すことですよね。
これを実現するためには次の2通りの方法があります。
- フローを2つ用意する
- 出勤ボタン、退勤ボタンを押すフローをそれぞれ作成する
- ひとつのフローでボタンを押す条件を分ける
- 12時までは出勤ボタン、12時以降は退勤ボタンを押すようにする
フローを2つ用意する方法であれば、遅刻や早退などのイレギュラーなケースにも対応できますが修正が発生した場合に修正箇所が2倍になります(フローは一覧画面からコピーを作成できますので、増やすこと自体は簡単です)。
ひとつのフローの場合は、ログイン時にフローを実行したい場合にイレギュラーなケースに対応できない可能性があります。どのように使用するのかを考えたうえでどちらかを決定することをおすすめします。
ここでは、ひとつのフローでボタンを押す条件を分ける方法で作成していきます。
12時前なら出勤、12時以降なら退勤ボタンを押す
12時より前なら出勤ボタン、12時以降なら退勤ボタンを押すようにします。
フローが実行される日時を取得するには、日時>「現在の日時を取得」というアクションを追加します。
取得した日時が12時より前かどうかを判定するために、if文で分岐させます。
条件>「if」というアクションを追加します
現在日時が12:00よりも大きい場合
以下のようなアクションが追加されますので、IfとEndのあいだに「Webページのボタンを押します」というアクションを追加します。さらに、Endの手前に「Else if」を追加し、「Webページのボタンを押します」というアクションを追加します。
こうすることで、12時より前にフローが実行されたときは出勤ボタン、12時以降にフローが実行されたときは退勤ボタンが押されるようになりました。
フローを実行して自動打刻できるか確認してみる
ここまで設定できたら、以下のようなフローが完成しているかと思いますので、実際にフローを実行して自動で打刻できるか確認したいと思います。
実際には打刻したくないという場合には、無効化したいアクションの右側にある3つの点マークを押下して、「アクションを無効化する」を押しておいてください。
画面上部の実行ボタンを押して、正しく動作すれば作成完了です。
スケジューラの設定
PADのフローは、一覧から手動で実行することができます。
しかし、これでは「完全自動化」ではありませんね。「朝、出社してPCを立ち上げたタイミングで出勤ボタンを押したい」「PCをシャットダウンするときに退勤ボタンを押したい」とか、
パートタイム労働の方であれば、「扶養の範囲内におさえたいから毎日9:00ちょうどに打刻できるようにしたい」という場合もあると思います。
そのような場合に使用するのがWindowsの「タスクスケジューラ」です。タスクスケジューラを使用した完全自動化設定方法は以下の記事をご参照ください。
応用編:止まらないフローを作る
PADの自動化フローは、フローを作成しているときには発生しないようなエラーが起こることがあります。具体的には
- ページが開くのが遅くて、ボタンがまだ表示されてないのに押そうとして失敗
- ログイン情報が保持されていたのでログイン画面が表示されず、ログイン情報を入力しようとして失敗
などが想定されます。そのような場合には、ページが表示されるまで待機するアクションを追加したり、画面にユーザーID・パスワードのテキストボックスがあるかどうか確認して、あるときだけ入力するようにするなど、想定されるケースに対応したフローを作ると良いです。
・・・といっても、なかなか動かしてみないとどんなエラーが起こるかは分からないので、はじめのうちエラーが発生したら都度対処しながら実用的なフローを目指していければ良いんじゃないかと思います。
PADのフローをスケジューラに設定して実行する場合、指定した時刻になるとフローが動き出します。その際にマウスを動かしてしまうとフローに失敗する場合があります。マウス操作を禁止するアクションを追加したい場合には、以下を参考にしてみてください。
完成したフローはこちら
最終的に完成したフローは以下になります。
スケジューラではなく手動でフローが実行できれば良いという場合には、11~17行目なしで作成すればOKです。
コメント