1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SalesforceワークフローをCSVに一覧化する

Posted at

Salesforceを昔から使っているお客様環境の遺物に手を付けるときがきました。
フローへ移行されずに残っていたワークフロールールを確認するために、既存のワークフロールールを一覧化するためにちょっとしたコードを用意しました。

ワークフロールールの一覧化

CSVへの変換.sh
# ワークフローファイルを解析し、ワークフロー一覧、項目更新一覧、メールアラート一覧をCSVに出力するスクリプト
$workflowDir = "<ワークフローファイルフォルダへのパス>force-app\main\default\workflows"
$outputWorkflowCsv = "<ワークフロー一覧ファイル出力先へのパス>\workflow_list.csv"
$outputFieldUpdateCsv = "<項目自動更新一覧ファイル出力先へのパス>\field_update_list.csv"
$outputEmailAlertCsv = "<メールアラート一覧ファイル出力先へのパス>\email_alert_list.csv"

[System.Collections.ArrayList]$workflowList = @()
[System.Collections.ArrayList]$fieldUpdateList = @()
[System.Collections.ArrayList]$emailAlertList = @()

# ワークフローファイルを読み取る
Get-ChildItem -Path $workflowDir -Filter "*.workflow-meta.xml" | ForEach-Object {
    $xml = [xml](Get-Content $_.FullName -Encoding UTF8)
    $objectName = $_.BaseName -replace ".workflow-meta"

    # ワークフローのルールを取得
    foreach ($rule in $xml.Workflow.rules) {
        $actionName = ""
        # ワークフローのルールのアクションリストを取得
        foreach ($action in $rule.actions) {
            $actionName += $action.name + "(" + $action.type + "); "
        }
        $workflowList.Add([PSCustomObject]@{
            Object = $objectName
            RuleName = $rule.fullName
            Active = $rule.active
            TriggerType = $rule.triggerType
            Description = $rule.description
            actionName = $actionName
        }) | Out-Null
    }

    # 項目更新ルールを取得
    foreach ($update in $xml.Workflow.fieldUpdates) {
        $fieldUpdateList.Add([PSCustomObject]@{
            Object = $objectName
            FieldUpdateName = $update.fullName
            Field = $update.field
            Operation = $update.operation
            Formula = $update.formula
            Description = $update.description
        }) | Out-Null
    }

    # メールアラートを取得
    foreach ($alert in $xml.Workflow.alerts) {
        $emailAlertList.Add([PSCustomObject]@{
            Object = $objectName
            AlertName = $alert.fullName
            Description = $alert.description
            Recipients = ($alert.recipients | ForEach-Object { $_.field }) -join "; "
            SenderAddress = $alert.senderAddress
            Template = $alert.template
        }) | Out-Null
    }
}

# CSVに出力
$workflowList | Export-Csv -Path $outputWorkflowCsv -Encoding UTF8 -NoTypeInformation
$fieldUpdateList | Export-Csv -Path $outputFieldUpdateCsv -Encoding UTF8 -NoTypeInformation
$emailAlertList | Export-Csv -Path $outputEmailAlertCsv -Encoding UTF8 -NoTypeInformation

Write-Host "ワークフロー一覧を $outputWorkflowCsv に出力しました。"
Write-Host "項目更新一覧を $outputFieldUpdateCsv に出力しました。"
Write-Host "メールアラート一覧を $outputEmailAlertCsv に出力しました。"

利用方法

上記シェルを開いて、ワークフローのメタファイルが保存されているパスを指定してください。
指定フォルダに入っている「Account.workflow-meta.xml」のようなワークフローファイルをワークフロールール一覧、項目更新一覧、メールアラート一覧に分割して保存します。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?