ワークフローでリストの全アイテムを処理する方法

アドバンスド · ソリューション株式会社 傍島三保子


■はじめに
リスト内の複数のアイテムに対して同じ処理をしたいという場合のSharePoint 2010 ワークフローでの実現方法を説明します。
SharePoint 2010 ワークフローでは、ループアクション(ForやWhile)がありません。
そこで、「次のアイテム更新」アクションを使い、ワークフローで他のアイテムを更新し、更新されたアイテムのワークフローが起動することを繰り返すことで実現します。

■前提条件
・SharePoint 2010、2013、Online

■事前準備
・カスタムリスト
ADS_sobajima_001.png

■実現方法概要
下図の流れで実現します。
ADS_sobajima_002.png

■ワークフロー作成

・リストのワークフローを作成します。

ADS_sobajima_003.png 

・ワークフローの名前を設定します。

ADS_sobajima_004.png 

・ワークフローの初期状態です。

ADS_sobajima_005.png 

・ワークフローを下図の通り、作成します。

ADS_sobajima_006.png
ADS_sobajima_007.png 

更新するアイテムは、数値列の値 -1の値を持つアイテムを検索条件にし、数値列の値を +1に更新します。

・「ワークフローの設定」画面を開き、アイテムの更新時に起動するようにします。

ADS_sobajima_008.png 

・ワークフローを発行します。

■動作確認

・カスタムリストにアイテムを作成します。

ADS_sobajima_009.png 

・数値列の値を「1」に変更し、アイテムを更新します。

ADS_sobajima_010.png 

・結果を確認します。

ADS_sobajima_011.png 

10件目のワークフローで更新されたアイテムのワークフローが動いていません。
これでは、10件ごとに手動でアイテムを更新しなくてはいけないので、改修をします。

■カスタムリストの列追加
・カスタムリストに「Counter」列を追加します。

ADS_sobajima_012.png 

■ワークフロー改修
・ワークフローを下図の通り、変更します。
ADS_sobajima_013.png
ADS_sobajima_014.png

・ワークフローを発行します。

■動作確認(改修後)
・カスタムリストのアイテムは数値列を揃えます。

ADS_sobajima_015.png 

・数値列とCounter列の値を「1」に変更し、アイテムを更新します。

ADS_sobajima_016.png 

・結果を確認します。

ADS_sobajima_017.png 

今度は全てのアイテムのワークフローが動きました。

今回のワークフローではご紹介しておりませんが、実現方法概要にあります「未更新のアイテム有無」チェックの処理を入れることで、エラーなく完了するワークフローを作成することができます。

■あとがき
処理時間を気にしない(いつか終わっていればよい)処理であれば、SharePointのワークフローを使ってみてはいかがでしょうか。

応用例:
今回のワークフローと条件を元に行う処理を組み合わせることで以下のような場合に使用できると思います。
・貸し出しリストの未返却情報を基に、督促メールを送信する
・申請リストの未承認情報のうち、条件を満たしている場合、承認にする