見出し画像

PowerAutomateDesktopによる業務効率化のすすめ

はじめに

「3時間かかる作業を自動化したいよ。ドラ◯もん」
「簡単に言ってくれるな~」
22世紀はまだですがカンタンにできちゃうんですよ。
(パソコンの中のみですけど)

ということで、PowerAutomateDesktopを使用して社内の業務効率改善に取り組んでみましょう。
PowerAutomateDesktop(以下PAD)はPCで行っている様々な動作をプログラムを書かずに自動化してくれる機能を持っています。
まずはココからダウンロードしてみましょう。
マイクロソフトから提供されているツールで、無料で利用できます。

インストールして起動するとこんな画面

どの業務を効率化できるのか

さて、業務効率の改善と言っても実際に効率化できる業務があるのでしょうか。
複雑過ぎて自動化ができない処理だったり、人の目が必須な業務だったり…
まずは社員に話を聞いて自動化できる業務があるか確認してみましょう。

早速忙しそうな社員を見つけました。
「何か業務の手作業で困ってることは無いですか?」
「そんなことより!このExcelのデータ200件を
  A社の問い合わせフォームに入力する作業があるんだ!あと2時間以内に!」
「なるほど!ありがとうございます!」

社員の方が早速自動化できそうな仕事を提供してくれたので、
この件を題材に自動化してみましょう。(ポジティブ
※ 弊社の社員は皆優しく、話しかけても邪険にする方はいません

何を自動化するのか整理しておくと良いでしょう。

・ Excelからデータを一括で取得する
・ 特定WebサイトのフォームにExcelのデータ1行目を入力する
・ 登録ボタンを押下したらフォームの入力に戻り、次行のデータで入力する
・ 繰り返し登録できる

実際はもっと条件があると思いますが、初回としては丁度いいですね。
Excelのデータも提供してもらい、どのような構成になっているか確認しておきましょう。今回は例題としてこのようなExcelファイルを作成して「問い合わせリスト.xlsx」として保存しました。

今回作成したテストデータ

では、PADで実際に自動化を試してみましょう。

Excelの操作をやってみる

Excelの起動

まず「新しいフロー」を作ってみましょう。
どうやらアクションなるものを選択できる。まずはExcelの起動をしてみますか。

アクションから[Excel]→[Excelの起動]を選択すると別ウィンドウでポップアップする

ふむふむ、起動するExcelを選択できるようです。
[Excelの起動]から[次のドキュメントを開く]を選択すると
[ドキュメント パス]を指定できるようになります。
ドキュメントパスには作成した「問い合わせリスト.xlsx」を指定しています。

既存のファイルを開きたいので、ドキュメントパスを指定する。
パスは社内の共有サーバーなども指定できました。

保存するとフローの1番が表示されます。
フロー変数」にインスタンス「ExcelInstance」が登録されていることが確認できるでしょうか。
恐らく開いたExcelの操作をするためのオブジェクト的なものでしょう。
エンジニアの勘がそう言っています。

変数や日付のアクションを用いて20220808_問い合わせリスト.xlsxとかもいける

Excelからセルのデータをまとめて取得

次はExcelワークシートからデータを読み取ってみましょうか。
デフォルトでExcelのインスタンスに「ExcelInstance」が指定されています。
%変数名%」という形で変数指定するっぽい。
これだけお膳立てされてれば勝ち確ですわ。

データ取得の開始列と行を指定して…
終了の列と行を…………………………………………最終行?

業務で使用するExcelデータの最終行って都度変わりますよね…

最終行に何を入力すればいいのか

拝啓
グーグル先生お元気でしょうか。
私は今困っています。助けてください。
敬具

ググってみると大したことはなかった

最初の空白行を取得できるアクションが用意されています。
ちゃんとアクション一覧確認してないだけ
FirstFreeRowという変数に格納されるようです。

そんなこんなあり、最初に現れる空白行=行末の一つ先として定義します。
空白が途中である場合などの考慮をしていないのでデータの構造によっては
データが全て取得できない可能性もあります。今回は空白が無い前提です。

空白行の一つ前の行までが対象なので「-1」します

ちなみに「ExcelData」という変数にデータが入っています。

Excelを閉じる

最後にExcelを閉じておきましょう。
閉じないと、起動する度に同じExcelが開いてしまってうざったい。
今回は読み込みだけですが、書き込みを行う場合に重複してExcelを開くと書き込みできないので注意が必要です。

Excelからデータを読み込むだけで4つのフローができた

ブラウザーの操作をやってみる

ブラウザーの起動

Excelの操作はなんとなくできたけど、ブラウザーの自動化って難しくない?
スクレイピングも最近は少ないコードで書けるけど、そもそもPADでできるのかね。
と思ってたら当たり前のようにあるじゃないですか「ブラウザー自動化」。
Webフォーム入力の項目もあるので使用してみましょう。

ブラウザー自動化の中に[Webフォーム入力]のプルダウンがある

PAD上でChromeの起動を試してみましょう。
パラメータの選択で起動モードや初期URLの指定があります。
Browser」という変数が生成されます。

今回は自社の問い合わせフォームを利用します。
※ スクレイピングで他社のサイトに迷惑をかけないように意識しましょう。

Excelのデータをフォームに入力するには

Excelから取得したデータは、PAD上では以下の画像の参考画像のように表示できます。
フローの実行後に右のカラムにある[フロー変数]内の「ExcelData」をダブルクリックすることで確認できます。

Excelからの取得データをPADで表示できる

この「ExcelData」は所謂「配列」という構造で変数に格納されています。
配列データを処理するために恐らく「アレ」がアクションにあるはずです。
エンジニアの皆様はニヤリとしたことでしょう。

さぁ出てきなさい!隠れても無駄です!!

ずっとここにおったが

はい。「For each」を使います。
「For each」のループ処理を使うことで、Excelから取得しているデータを1行ずつ読み込んでいくイメージとなります。
パラメーターの選択では[反復処理を行う値]に「ExcelData」を指定します。

保存先に新しくCurrentItemという変数が作成されます
For eachをフローに追加するとEndもセットで追加される

「For each」と「End」の組み合わせは必ず1対1になり、
この中で問い合わせを行えば、繰り返し実行できる処理となります。
For each内で値を参照する方法は「フォームへの書き込み」の項目で説明します。

Webページへの移動

ループ処理でまず行うのは入力ページへの遷移です。
ループ開始後に登録ページに遷移しておくことで、
2順目以後も登録ページから開始できますね。
アクションは[ブラウザー自動化]→[Webページに移動]を選択します。

問い合わせページのURLを指定

ブラウザアドオンの確認

ここで使用ブラウザのPAD用アドオンが有効になっているか確認しておきましょう。
基本的にはインストール時にブラウザ用のアドオンもインストールされます。
※ このタイミングでアドオンが無い場合はPADの[ツール]→[ブラウザ拡張機能]からインストール可能です。

Chromeのアドオン有効状態

UI要素の追加

次に問い合わせに必要な「inputタグ」や「ボタン」を追加しておきましょう。
どのinputタグに入力するのかを特定するために必要な工程です。
右上にある[UI要素のタブ]を押下して、[UI要素の追加]ボタンを押下します。

UI要素の追加ボタンを押下すると
UI要素ピッカーなるミニウィンドウが開く

この状態で入力したいページをブラウザーで開き、
テキストフォーム周りにマウスを合わせると………
お、見慣れない赤い枠が現れました。

タグにマウスカーソルを合わせると赤いフレームが表示される

「ミニウィンドウ内」に記載があった通りCtrl+左クリックでinputタグ指定すると………
ミニウィンドウ内にフォームの情報が追加されています!!
これを繰り返して、入力する要素を登録しておくと次の工程で楽になります。
登録が一通り完了して完了ボタン押下すると、追加した要素が表示されます。

プルダウンやセレクトボックス、ボタンも同じように追加

フォームへの書き込み

これでようやく入力フォームに値を設定できそうです。
[UI要素]は先程指定した要素を選択できるので、
入力したいinputフォームを指定します。
[テキスト]はループ内で使用できるCurrentItemを指定します。

そういえば、Excelから取得したデータをFor eachで読み込んでから
値の参照方法の説明を飛ばしていましたね。

CurrentItemの中には1行目から順にColumn1~Column6が入っています。
Column2の氏名を指定したいのでCurrentItem[1]と指定します。
配列に馴染みの無い方々は

「は?2番目だから2を指定するんやろ。算数できんの?」

と思ったことでしょう。
PADでは配列を扱う時、開始は1ではなく0からになります。
この辺りの振る舞いはプログラム言語と同じようです。
オデ サンスウ デキル。

同じ要領でテキストボックスやプルダウン、チェックボックスも設定してみましょう。
以下のようにループ内にフォームへの入力ができればOKです。

自社問い合わせフォームの入力例

ブラウザーを閉じる

最後にブラウザーを閉じればフローは完成となります。

ループの外で閉じましょう

動作確認

アクションの無効化

動作確認や検証中は、Submitボタン押下をすると都合が悪い場合があります。
安定動作が確認できるまでは登録ボタンの押下を実行しないように、アクションを無効化することが可能です。
無効化したいアクションを選択し、右クリック→[アクションを無効化]を選択しましょう。

無効化すると薄い色で表示される

フロー実行

フロー実行を確認してみましょう。
PADの上辺にある実行ボタンを押下することで作成したフローが実行されます。

動き出すと、まずExcelが起動して、すぐ閉じて…
ブラウザー開いて…データの入力が…………ちょ、早い早い!
でもちゃんと入力していますね。

実行は途中で停止することができますので、入力内容を確認したい場合は一時停止してみましょう。
エラーが発生してもエラー内容が分かりやすい形で表示されるので直せるはずです。

サクサクと入力されていくので目検は困難

ブラウザー自動化の注意点

さて、動作確認ができたところで、注意点を説明しておきましょう。
ブラウザーの自動化には基本的なルールが存在します。
それは「アクセス先のサイトに迷惑をかけない」というものです。
具体的にはアクセス間隔(ページ遷移間隔)を1秒以上開けることを意識しましょう。
動産不法侵入」という犯罪になるケースもあるようです。

もうひとつ。
サイトの更新などで目的のタグが取得できずにエラーになる可能性があります。
エラーについて運営元の企業に文句を言うのはお門違いなので
絶対にやめましょう

サイトのデータを取得する処理を書いた場合は著作権についても考慮が必要です。
詳しくは「著作権」や「動産不法侵入」などの注意点がまとめられている記事やサイトを一読していただき、可能なら社内の法務やシステム管理者に確認してください。
自己責任というやつです。

まとめ

「ってことでA社の問い合わせを自動化しましたよ!」
「それはもう終わってる!
  明日までにこの400件のデータをB社の問い合わせフォームに(ry」
「……がんばってください!」

ということで、PADを使用した業務効率化について記載させていただきました。
Excelやブラウザへの入力だけですが、慣れてきたら分岐やエラー処理を試して
リッチなフローを作成すれば、社員からも喜ばれることでしょう。
(時には逃亡せざるを得ない状況もありますが‥)

記事内容は説明不足や冗長な箇所もありますが、
PADは他にも分かりやすい記事が多くあるので
ちょっとでも参考になればありがたいです。

これにて締めとさせていただきます。
PADで良き自動化を。