ライブラリ間を SharePoint Designer の ワークフローでつなぐ

内部用のドキュメントライブラリと、公開用のライブラリがあるとします。内部用は、アクセス制限され、一部のユーザしか利用できません。内部用ライブラリでレビューが終了したら、自動的に公開用ライブラリに移動させたい。

これなら、SharePoint Designer によるワークフローデザインで実装できます。
こんな感じになります。シンプルです。


内部用ドキュメントライブラリにファイルを登録して

ワークフローを実行します。(プロパティをフラグにして自動実行させてもいいかも知れません)

公開用ライブラリに移動しました。公開用ライブラリでは、ユーザは表示のみ可能で編集・削除はできなくしています。

この方法のミソは、「閲覧・投稿はできるが編集・削除はできない」カスタムのアクセス許可レベルを設定することにあります。

SharePoint Designer によるワークフローは、それを動かしたユーザの権限で動作します。(visual studio でデザインすればシステムアカウントで動かせる)

このため、公開用ライブラリにファイルを移動するには MOSS デフォルトでは「投稿」権限が必要なのですが、「投稿」は(その名前に反して)実は「編集」「削除」も可能なのです。これでは、アーカイブとしての「公開用ライブラリ」には不適当です。

そこで、カスタムのアクセス許可レベルを作成します。

サイトコレクションのトップで
サイトの設定 > ユーザとグループ > サイトの権限 > 設定 > アクセス許可レベル
から設定できます。

以下は設定例です。
あくまでウチの環境での設定例なので、余計な権限が結構ついています。
(実際には [アイテムの追加][アイテムを開く][ページの表示][開く]だけで大丈夫だと思います)

なお、ファイルを移動した際、移動元で設定されていたプロパティも、移動先に同名の列(厳密には内部名が同じである必要がある)があれば、きちんと引き継がれるようです。

ただし、この方法の難点は、

1.最終更新者 と 最終更新日
あくまでコピー→削除 なので、最終更新者はワークフローを動かしたユーザ、最終更新日はワークフローを動かしたタイミングになります。

2.フォルダに対応できない
内部用ライブラリでどういう風にフォルダを切っていても、移動先の公開用ライブラリでは全てフラットになってしまいます。
これはちょっと問題かな~。

ちなみに、内部用ライブラリで異なるフォルダに同じ名前のファイルが存在した場合はどうなるのか?(つまり同名のファイルが既に移動先に存在する)については、妙に上手く回避されていて、ワークフローが動いた際に、ファイル名の重複を検地して自動的にファイル名を変更してくれます。

半人前SharePointerのブログ
SharePoint Desingerの「アイテムをコピー」アクション


Author

中村 和彦(シンプレッソ・コンサルティング株式会社 代表)が「ユーザ視点の SharePoint 情報」を発信します。元大手製造業 SharePoint 運用担当。現SharePoint コンサルタント。お仕事のお問い合わせはこちらまでお願いします。当ブログにおける発信内容は個人に帰属し所属組織の公式発信/見解ではありません。
FB : 中村 和彦
blog: Be・Better!
MS MVP SharePoint 2009/10-2011/9
MS MVP Office 365 2012/10-2014/9