SITECORE MANIA 開発者向け技術ブログ

その他

加藤

加藤

SPEを利用してワークフローを一括で修正する方法

Sitecore PowerShell Extensions (SPE)を利用して、ワークフローを一括で修正する方法を紹介します。

インストール

1. まずは以下のページから該当のモジュールをダウンロードします。

https://github.com/SitecorePowerShell/Console/releases/

2. ダウンロードしたパッケージをインストールウィザードからインストールします。

3. ダウンロード終了後、以下画像のように「PowerShell ISE」が表示されましたらインストール完了です。

 

※インストール手順の詳細、動作確認については割愛させていただきます。

 

使用するスクリプト

以下のスクリプトを使用し指定したアイテムとその配下アイテムのワークフローを一括で更新します。

$item = Get-Item "/sitecore/content/Training/20240112-No1" -Language "ja-JP"
$item.Editing.BeginEdit()
$item.Fields["__Workflow state"].Value = "{FCA998C5-0CC3-4F91-94D8-0A4E6CAECE88}"
$item.Editing.EndEdit()
Get-ChildItem -Recurse "/sitecore/content/Training/20240112-No1" -Language "ja-JP" | Where-Object { $_.Fields["__Workflow state"] -ne $null } | ForEach-Object {
    $_.Editing.BeginEdit()
    $_.Fields["__Workflow state"].Value = "{FCA998C5-0CC3-4F91-94D8-0A4E6CAECE88}";
    $_.Editing.EndEdit()
}

1行目でアイテムを指定してます。
2~4行目でそのアイテムのワークフローを更新してます。
5行目以降は子アイテムを取得し、その子アイテム分のワークフローを更新するループ処理となっています。
今回使用しているワークフローの状態は以下のアイテムIDで取得しています。

/sitecore/system/Workflows/Sample Workflow

※ワークフローのアイテムIDは自身のものに置き換えてください。

実行し、以下の画像のようにコンソール出力箇所にTrueが出力されていたら成功です。

最後に管理画面側でワークフローが承認済みに更新されていることを確認します。

コンテンツを同時に公開したいときやテスト環境で大量のアイテムを承認済みのステータスに変更したいときなどに利用できるかと思います。
以上、一括でワークフローを更新する方法でした。



※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Sitecoreのバージョンによって実装されている機能が異なります。

この記事を読んだ人はこちらの記事も読んでます

Sitecore導入に関するご相談・資料ダウンロード

導入をご検討・ご依頼の方や、サービスについてご不明点がございましたらお気軽にお問い合わせください。

Sitecoreの運用問題を解決する

既にSitecoreを導入しているお客様向けサービス