列にユーザの所属情報を表示させる

SharePoint Server 2007 の特徴であるワークフロー機能をエージェント的に活用し、リストに機能を追加してみます。
今回はのお題は 「ユーザの所属部署を列に表示する」


SharePoint 2007 には、あらたに [ユーザとグループ] 列が追加されました。
この列は、アドレス帳を検索する形でユーザ(やグループ)を指定でき、そのユーザについて、名前だけでなく所属や電話番号、メールアドレスなどプロファイルにある情報を表示してくれます。

しかし、この列にはやや欠点があります。
それはデフォルト値が指定できない/数式を使えないことです。
例えば、アイテムにあるユーザの名前・所属部署・メールアドレスを表示するには、それぞれの列について、その都度ユーザを指定してやる必要があります。

これでは実用になりません。
そこで「ワークフロー機能のエージェント的活用」です。
ユーザ(名)を指定するだけで、そのユーザの所属部署とメールアドレスを表示してくれる仕組みを作ってみたいと思います。

まず、リストに列を作成します。

1.担当:[ユーザとグループ]/表示[名前]
2.所属:[ユーザとグループ][ユーザとグループ]/表示[部署]
3.メール:[ユーザとグループ]/表示[電子メール]

次に、SharePoint Designer を使い、このリストにワークフローを作成します。

新規時に起動
変更時に起動

1st STEP
もし [ユーザ] 列が空白なら、ワークフローを停止する

2nd STEP
[所属] 列に、[ユーザ] 列の値を設定する。
[メール] 列に、[ユーザ] 列の値を設定する。

3rd STEP
ワークフローを停止する。

アイテムを作成・編集して、[担当者] 列にユーザを指定すると、そのユーザの所属とメールアドレスが表示されます。

ようは、[担当] 列に入力された値を他二列にコピーしているだけなのですが(苦笑)

出来ることなら、[所属] [メール] 列は、表示のみ/編集不可にしたいところなのですが─残念ながらこれは出来なさそうです。
この辺りはインフォパスなら簡単なんですが。
MOSS 2007 では、列の説明に「入力不要」と書いておく位しか出来ません。

当初は [所属] [メール] 列は非表示(コンテンツタイプを有効にすると非表示を選択できるようになります)にして、別の集計地列(集計列は、編集モードでは非表示になります)から列参照させようとも考えたのですが。しかし、実際に試してみると、[ユーザとグループ] 列は、数式が使えないだけではなく、参照することも出来ないんですね。

あと一歩という感じです。


これまでのコメント

  1. ぶーさー より:

    AGENT: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
    saruhikoさん

    いつも参考にさせてもらってます、ぶーさーと申\します。

    そんな方法があったんですね。
    SharePointを使ってて、所属部署とユーザーを関連付けられないことが相当不便に感じてたんですよ。

    [所属部署]列(選択肢)と[ユーザー]列(ユーザとグループ)の2列をもつリストがある場合、
    ?所属部署を選択する時に間違える人がいる。(その逆(ユーザーを間違える)も然り)
    がかなり問題でした。
    結局、所属部署を選択すると、それに紐づくユーザーしか表\示されない、みたいなことがなんとか出来ないかと模索しておりましたが、その方法ならなんとか解決できそうです。

    貴重な情報、ありがとうございました。
    今後とも宜しくお願いします。

  2. saruhiko より:

    AGENT: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
    どうも!
    いえいえ、少しでもお役に立てたようでしたら嬉しいです。

    それにしても米国では「部署」ってあまり重視されないんでしょうかねぇ。ほとんど全く考慮されていない(苦笑)のが不思議です。
    部署別のソ\ートとか、必須機能\だと思うんですけどね〜

    こちらこそ、宜しくおねがいいたしますm(_ _)m

  3. T.Notsu より:

    AGENT: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
    いつも参考にさせていただいています。

    ここに記載の方法も、こっそり参考にさせていただきました(弊社の社内ポータルで利用していたりします)。
    集計列にできることとできないことがあるから、ワークフロー使う方法って、結構\応用がきくんですよね。

    あ、ところで
    この前私も別の人から教えてもらったのですが、リストで「コンテンツタイプの管理を許可」したりすると、非表\示の列が作成できます。
    これを応用して
    ・入力可能\な、且つ非表\示の列を作成
    ・非表\示列の値を表\示する集計列を作成
    ・ワークフローの結果は、非表\示列側に設定
    とすると、入力不可能\な感じにできました。
    ご参考までに。
    (既にご存じだったらごめんなさい)

  4. saruhiko より:

    AGENT: *Internet Explorer
    なるほど!応用のそのまた応用ですね!
    ちょっとスゴイや(笑)
    ありがとうございます!是非活用させていただきます

login

Author

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