LoginSignup
2
2

More than 1 year has passed since last update.

PowerAutomateでWeb情報を入手しExcelへ記入する

Posted at

背景

鬼教官より、GWの課題をもらった。
社内ではOffice365が導入されている為、使いこなすのが当たり前だということで
今回はPowerAutomateの課題をクリアしていく。

課題

Power Automate Desktopで下記を自動化
①エクセルファイル(宿題.xlsx)を開く
<宿題.xlsx>

住所 緯度 経度
東京都
鹿児島県

②ネットから、住所列の緯度経度を取得する
③緯度経度列に入力
④3秒待つ
⑤エクセルを保存せずに閉じる

準備

OS環境

PowerAutomate Desktopを使うには、Windows10の環境が必要。
わし)おいらのPC、Windows10だよ。
鬼教官)じゃあ、Windows10にしてください。

ネットで検索したところ、2021年のGW時点では、まだアップグレードできるみたい。
参考:Windows10アップグレード

PowerAutomateDesktop

MicrosoftのHPからダウンロード。
最近できたみたいで、Windows10ユーザなら無料で使えるみたい。

結果

1.png

2.png

3.png

疑問

「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を勉強してみたい。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2