【UiPath】Execution.logをExcelで開く方法＆CSV変換スクリプト

UiPathの**Execution.log**はプロセスの実行中にロボットが生成したメッセージ (ログ) を記録したもので、通常は `C:\Users\{ユーザー名}\AppData\Local\UiPath\Logs` に保存されている。

Execution.logはStudioからの実行だけでなく、Orchestratorからロボットを実行した場合でも生成され、ローカルに保存される。OrchestratorではログをCSVとしてエクスポートすることもできるが、保存期間を超えたログは表示されなくなるため、保存期間を過ぎた過去のログを拾いたい場合はローカルからExecution.logを持ってきて開く必要がある。
そこで、本記事ではExecution.logをExcelで開く方法や、CSVに変換するPowerShellを記載する。

## Execution.logをExcelで開く方法

前述の通り、Execution.logは `C:\Users\{ユーザー名}\AppData\Local\UiPath\Logs` に保存されているが、Studioからもそのフォルダを開くこともできる。「デバッグ」タグの一番右に「ログを開く」ボタンが用意されているので、こちらをクリックするとエクスプローラーでログが格納された先のフォルダが開かれる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/578020/ff0de399-1b8a-41c7-a67e-6adc662cc5e0.png)

Execution.logは `yyyy-MM-dd_Execution.log` という形式で日付単位で作成される。開いて内容を確認すると、どうやらJson形式であるということがわかるが、あくまでヘッダーをつけてJsonを一行一行書きだすという形になっており、ログ全体が綺麗なJson配列になっているというわけではない。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/578020/3dfbf67e-cbe8-40ce-a300-fb2509237250.png)

そのままではExcel（Power Query）で読み込もうとしても読み込めないので、先にエディタを使い正規表現で形を整える。ここではサクラエディタを使うが、正規表現が使えるものならなんでもよい。
最初の中括弧までの範囲がJson配列としては不要なので、正規表現で行の先頭から最初の中括弧開きまでの範囲（`^.*?{`）を選択し、その部分をカンマと中括弧開き（`,{`）に置換する。なお、ここで置換する範囲にはタイムスタンプとログレベルが含まれているが、その情報は通常Json内にも含まれているのでここでは消してしまって構わない。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/578020/cab84b43-12cf-432c-abd9-ef86315538e2.png)

続けて先頭行の最初のカンマを大括弧開きに置換し、最終行に1行追加し大括弧閉じを記載する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/578020/731a6935-90fa-43c8-8d72-035b87b3f284.png)

これで無事Json配列として整形された。後はExcel（Power Query）でJsonファイルとして読み込めばよい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/578020/e2114c3e-4dcf-4615-acb2-1b0e1ab3d87f.png)

Excelを開き、「データ」タブの「データの取得」、「ファイルから」、「JSON から」と選択し、先ほど整形して保存したExecution.logを読み込む。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/578020/65882c1a-e0f5-4c0e-a7d2-757f1aacdc1b.png)

正しく開けたら「テーブルへの変換」を行い、カラムを展開し、「閉じて読み込む」を押す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/578020/a9344bcf-7ae5-4c7d-9b66-db4f7f0e4faf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/578020/8d755552-226b-475d-bb80-a01582b8781f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/578020/12299056-13e1-4916-ac27-2cdbd36e83ca.png)

これで無事にExcelに表形式で読み込むことができた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/578020/37fcffbe-78fc-443d-a414-062dbeb44d46.png)

例示したデータではその日に1回しかロボを実行しなかったため1回分の実行履歴しか入っていないが、その端末で同日に実行されたロボが複数あればExecution.logにまとめて記載される。

## CSV変換スクリプト（PowerShell）

Execution.logをPowerShellでCSVに変換するスクリプトがこちら。Jsonの変換はPowerShellのコマンドレットで行っているのでExcelは使用していないが、大まかな流れは前述のExcelで開く方法に記載した流れと同じである。

```PowerShell:LogToCsvConverter.ps1
<#
指定したテキストファイル（Execution.log）を読み取り、
正規表現で整形した後にJsonへ変換してログファイルと同フォルダに同名のcsvとして出力する。
#>

# 指定されたテキストファイルのパス
$inputFilePath = "C:\Users\{ユーザー名}\AppData\Local\UiPath\Logs\2025-05-02_Execution.log"

# ファイルのフォルダと名前を取得
$folderPath = Split-Path -Parent $inputFilePath
$fileName = [System.IO.Path]::GetFileNameWithoutExtension($inputFilePath)
$outputFilePath = "$folderPath\$fileName.csv"

# テキストファイルを1行ずつ読み込んで不要部分を置換
$processedLines = Get-Content $inputFilePath | ForEach-Object {
    $_ -replace '^(.*?)\{', ', {'
}

# 改行で結合
$jsonString = $processedLines -join "`r`n"

# 先頭の ',' を '[' に置換
$jsonString = $jsonString -replace '^\s*,', '['

# 最後に ']' を追加
$jsonString += "]"

# JSON 文字列をオブジェクトに変換
$jsonObject = $jsonString | ConvertFrom-Json

# JSON オブジェクトを CSV に変換し、ファイルに保存
$jsonObject | Export-Csv -Path $outputFilePath -NoTypeInformation -Encoding UTF8

# 結果を出力
Write-Output "CSVファイルが作成されました: $outputFilePath"
```

## 動作環境
UiPath Studio 2025.0
Microsoft Excel 2024 version 2503
PowerShell 5.1