今回はURLをまとめて更新する作業をPower Automateに代行してもらう方法をご紹介します。
私たちが2019年からWordPressで運営しているウェブメディアがあります。投稿された記事は300本以上になりました。当初はURLの命名ルールが決まっておらず、日本語が混在し、URLが文字化けしている記事がありました。数が多すぎて、長年修正に手を付けられていなかったのですが、Power Automate Desktopでまとめて解決することができました。
途方もない作業だったのですが、作業の自動化により1時間40分で更新することができました!
*注意:今回の記事は、「初めての方」には難しい内容になっています。既にPower Automateを操作したことがあり、おおよそイメージができる方を対象にしています。
完成形のイメージ
利用するプロダクトと準備するもの
- Power Automate Desktop
- 対象となるブラウザ
- Excelデータ
Power Automate Desktopの準備
Power Automateはクラウドフローではなく、デスクトップ版になるのでご注意ください。
インストール方法は割愛させていただきます。下記のURLが参考になります。
Power Automate のインストール – Power Automate | Microsoft Learn
Power Automate ブラウザ拡張子の準備
Power Automateでブラウザを制御するために、対象となるブラウザに拡張子(プラグイン)をインストールします。
初めての操作では忘れがちなので注意が必要です。
(参考)
Power Automate ブラウザ拡張機能のインストール – Power Automate | Microsoft Learn
Excelの準備
今回は、下記のようなExcelを準備しました。
ワードプレスのプラグインを使用して、このサイトにあるURLを全てExcelで一覧化しています。(一部抜粋して掲載しています。)関数を用いて、コピー用の新しいURLも作成するなど、下準備もしています。
作成の手順
Excelから対象のデータを抽出する
Power Automate Desktopを立ち上げて、新しいフローを作成します。
新しいフロー名をつけます。今回は、「工場経営ニュースのURL更新」という名前にしました。(スクリーンショットのフロー名は「test」と表記されています。)
まずは、Excelから対象のデータを抽出します。
画面左側のアクションから「Excel」を選択し、「Excelの起動」を追加します。
Excelの起動を、「次のドキュメントを開く」に変更し、ドキュメント パスに用意したExcelファイルを追加します。
アクション「Excel」から「Excelワークシートから読み取る」を追加します。
読み取りたいデータの範囲を見て取得を変更します。今回は読み取りたいデータがExcelの指定範囲内にあったので「セル範囲の値」を選択し、列行の数値を指定しました。
アクション「Excel」から「Excelを閉じる」を追加します。
実行をしてExcelファイルからデータが読み取れているか確認します。フロー変数の「ExcelData」に読み取りたいデータが入っていれば完了です。
変数を設定する
アクション「変数」から「変数の設定」を追加します。
Power Automate Desktopの数字は0がスタートなので、値を「0」を割り当てます。
ループを設定する
指定したブラウザでURLを変更するためのループを設定します。
アクション「ループ」から「For each」を追加し、{x}からExcel Data を選択します。
指定のブラウザを起動する
指定のブラウザを起動します。今回はChromeを使用するので、アクション「ブラウザ自動化」から「新しいChromeを起動する」を追加します。
まずは初期の文字化けしているURLを変更します。そのために、{x}から「Excel Data」を選択、[NewVar][‘Column1’]を追加します。
ウィンドウの状態は、この後、画面の場所(座標位置)を指定してクリックをさせるので最大化に設定しておきます。
注意1:今回Column1となっている部分は、フロー変数のExcelDataを確認し、URLが格納されている列を指定します。
注意2:初期URLの%の位置は注意してください。
アクション「ブラウザ自動化」→「Webホーム入力」を開き、「Webページのボタンを押します」を追加します。
今回は、投稿を編集ボタンをクリックする→編集用URLをクリックする→テキストフィールドに入力する→更新ボタンをクリックする、という流れで操作を行わせます。
場所(座標)を指定してクリックする
その後にUI要素を追加します。ボックス内右側のボタンを開き、「UI要素の追加」を押します。
※ブラウザを操作するために冒頭でご紹介した無料の拡張機能が必要です。
操作に必要なUI要素を拡張機能を使い、追加していきます。
編集用URLのクリックはUI要素で指定するとうまくいかないので、画面上の編集用URLの位置にクリックイベントを送信します。
アクション「マウスとキーボード」から「マウス クリックの送信」を追加し、マウスの移動をオンにします。そして、編集用URLの位置する座標の数値を入力します。座標の数値はマウス クリックの送信編集画面の、現在のカーソルの位置から確認します。
テキストフィールドに入力するために、アクション「ブラウザ自動化」→「Webフォーム入力」を開き、「Webページ内のテキストフィールドに入力する」を追加します。テキストフィールドのUI要素を追加しテキストに、%ExcelData[NewVar][‘Column4’]%を入力します。
今回、変更後のテキストがExcelDataのColumn4に格納されているので、Column4となっています。
待機してブラウザを閉じる
更新ボタンを押させる指示を出した後、更新時間を考慮するためアクション「フローコントロール」から「wait」を追加します。今回は5秒待機させますが、更新に何秒要するか確認して秒数を指定してください。
編集して更新ボタンを押すまでの流れが完成したのでブラウザを閉じます。
アクション「ブラウザ自動化」から「Webブラウザを閉じる」を追加します。
最後に、ループの次の操作に移るために変数を大きくします。
今回はExcelDataの行を1つずらして編集させるため、最初に設定した変数名「NewVar」の値を「1」大きくすると入力し保存します。
これでフローの完成です。あとは「実行」からフローを動かすと、すべて自動でURLを変更してくれます。
これができたときはとても感動しました。応用できる部分もあると思うで、ぜひお試しください。