#背景
鬼教官より、GWの課題をもらった。
社内ではOffice365が導入されている為、使いこなすのが当たり前だということで
今回はPowerAutomateの課題をクリアしていく。
#課題
Power Automate Desktopで下記を自動化
①エクセルファイル(宿題.xlsx)を開く
<宿題.xlsx>
住所 | 緯度 | 経度 |
---|---|---|
東京都 | ||
鹿児島県 |
②ネットから、住所列の緯度経度を取得する
③緯度経度列に入力
④3秒待つ
⑤エクセルを保存せずに閉じる
#準備
###OS環境
PowerAutomate Desktopを使うには、Windows10の環境が必要。
わし)おいらのPC、Windows10だよ。
鬼教官)じゃあ、Windows10にしてください。
ネットで検索したところ、2021年のGW時点では、まだアップグレードできるみたい。
参考:Windows10アップグレード
###PowerAutomateDesktop
MicrosoftのHPからダウンロード。
最近できたみたいで、Windows10ユーザなら無料で使えるみたい。
#結果
#疑問
「Webページのボタンを押します」「Wibページのリンクをクリックします」を「GPS座標検索」に設定しているが、
右の「TOKYO97風」をクリックしてしまう動作になっているので、「ウィンドウのUI要素をクリックする」に変更し
無理やり動作させている。
思うように動かないのは疑問として残る。
#まとめ
PowerShellで書くなら、こんな感じにおさまる
Set-StrictMode -Version Latest;
# Excelを起動する
$excel = New-Object -ComObject Excel.Application;
# 通常モード、前面で表示させる
$excel.WindowState = [Microsoft.Office.Interop.Excel.XlWindowState]::xlMinimized;
$excel.WindowState = [Microsoft.Office.Interop.Excel.XlWindowState]::xlNormal;
$excel.Visible = $true;
# ファイルを開く(パス注意)
$book = $excel.Workbooks.Open('宿題.xlsx');
$ws = $book.Worksheets(1);
$tbl = $ws.ListObjects(1);
# テーブルの行をループする
foreach ($row in $tbl.ListRows) {
# webから座標を取得
$result = Invoke-RestMethod -Uri "https://www.geocoding.jp/api/?q=$($row.Range(1).Value2)";
# 緯度を書き込み
$row.Range(2).Value2 = $result.result.coordinate.lat;
# 経度を書き込み
$row.Range(3).Value2 = $result.result.coordinate.lng;
}
# 3秒待つ(カウントダウン付き)
cmd /c 'timeout 3';
# 保存せずに閉じる
$book.Saved = $true;
$excel.Quit();
PowerAutomateで作るにしても、用途次第では使い物にならないかもしれない。
今後はPowerApps、Power BIを勉強してみたい。