パワークエリのクエリを定期実行・定期更新する方法を紹介します。

ここではWindowsのPowerShellとタスクスケジューラを利用した方法を紹介します。
PowerQueryの設定・準備
まずは自動更新用のパワークエリの準備と設定を行います。
自動実行したいクエリの作成
自動更新用のクエリを作成してください。ここでは例として「クエリA」という名前のクエリを作成しています。


定期更新用の設定
PowerShellからクエリを更新する場合にエラーが発生しないように「バックグラウンドで更新する」をオフにします。
- 対象のクエリを右クリックして「プロパティ」を選択します。


- 設定画面の「バックグラウンドで更新する」のチェックを外して「OK」を選択します。


ファイルを保存してPowerQuery側の設定は完了です。
PowerShellの設定・準備
次にPowerShellの準備と設定を行います。
実行ポリシーの確認と変更
PowerShellの実行ポリシーが「RemoteSigned」になっていることを確認します。なっていない場合は変更します。
Windowsの検索窓で「PowerShell」を入力して、表示される「PowerShell」を右クリックして管理者として実行します。


「Get-ExecutionPolicy」を入力し、Enterキーを押す。
「RemoteSigned」になっていればOKです。「Restricted」であれば下記に従ってポリシーを変更してください。


「Set-ExecutionPolicy RemoteSigned」を入力し、Enterキーを押します。実行ポリシーの変更について確認されますので問題なければ「Y」を入力してEnterキーを押します。


再度「Get-ExecutionPolicy」を入力して、実行ポリシーが「RemoteSigned」になっていればOKです。


クエリ更新用のPowerShellファイルを作成
次にクエリを実行するPowerShellファイルを作成します。
テキストエディタ(メモ帳など)に下記のスクリプトを記載して保存します。このときファイル拡張子は「.ps1」としてください。
# 設定項目
$FilePath = "ファイルパス" # 自由に変更してください
# Excelアプリケーションを起動
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $false # Excelを非表示で実行(表示したい場合はTrueに変更)
# 対象のExcelファイルを開く
$Workbook = $Excel.Workbooks.Open($FilePath)
# 全てのクエリをリフレッシュ
$Workbook.RefreshAll()
# 更新が完了するまで待機
do {
Start-Sleep -Seconds 1
} while ($Excel.CalculationState -ne 0 -or $Excel.RefreshingData)
# ファイルを保存して閉じる
$Workbook.Save()
$Workbook.Close()
# Excelアプリケーションを終了
$Excel.Quit()
# COMオブジェクトを解放
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($Excel) | Out-Null
Remove-Variable Excel
ここでは、下図のように「UpdatePowerQuery.ps1」という名前でC:\test\UpdatePowerQuery.ps1
に保存しています。このファイルの保存場所をタスクスケジューラで使用します。


タスクスケジューラの設定
タスクスケジューラによる定期実行の設定方法について紹介します。
説明例として下記の環境で 毎日AM9:00にクエリを定期実行する設定方法を紹介します。
- クエリ実行用のPowerShellファイルのパス:
C:\test\UpdatePowerQuery.ps1
タスクスケジューラ設定手順
タスクスケジューラを用いて毎日AM9:00にフローを定期実行する設定方法を紹介します。
Windowsの検索窓で「タスクスケジューラ」を入力して、表示される「タスクスケジューラ」を起動します。


「タスクスケジューラライブラリ」を選択して操作にある「タスクの作成」をクリックする。


新規タスクにおいてタスク名とセキュリティオプションを設定します。
セキュリティオプションにおいては下記にチェックを入れてください。
- ユーザがログオンしているときのみ実行する
- 最上位の特権で実行する


次にフロー実行の日時を設定します。
トリガータブの「新規」をクリックする。


設定で実行したい日時を設定してください。また、必ず「有効」にチェックが入ってることを確認してください。設定が完了したら「OK」をクリックします。
下図では2025年4月1日から毎日9時に更新が実行されるように設定しています。


次に実行するファイルの選択と設定をします。
操作タブの「新規」をクリックする。


- プログラム/スクリプト:powershell.exe のファイルパス
- 引数の追加: -Command ps1ファイルのフルパス
今回の環境での具体例は下記です。
- プログラム/スクリプト:C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
- 引数の追加:–Command C:\test\UpdatePowerQuery.ps1





32bit版Windows OSの場合、powershell.exe のファイルパスはC:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
になると思います
実行結果の確認
作成したタスクが正しく動作するか手動で確認します。
対象のタスクを選択して「実行する」をクリックしてください。


下記のように「前回の実行結果」が「この操作を正しく終了しました。(0x0)」となっていればOKです。


あとは、次の実行時間まで待って問題なく更新できているか確認してみてください。
タスクスケジューラが実行されない場合(0x1)
タスクスケジューラの実行結果が(0x1)となっている場合 や バッチファイルが実行されない場合は下記を試してみてください。
- powershellファイルの格納場所の変更(ファイルパスの確認)
- ファイルパスを
””
で囲む
Sponsored link
パワークエリの学習本についてはコチラの記事でまとめてますので参考にしてみてください。
・初心者向けおすすめ学習本
・初中級者向けおすすめ学習本
コメント