入力された値に応じて列にアイコンを表示したい

結構、これ、ニーズあるのではないかと思うのですけど。ノーツにできて、SharePoint にできないことのひとつです。技術的に難しいワケがないので、単に設計思想にないだけだとは思いますが。

一応、SharePoint でもワークフロー機能を応用(という程たいそうなものではありませんが)することでアイコンを表示できます。


※画像は IE6 でキャプチャしているので透過 png に対応していません。


まず、適当なアイコン画像を、サイト内のどこかにアップしておきます。
汎用化できるように、ルート直下にアイコン専用のライブラリを用意してもいいかもしれません。

次に、アイコンを表示させたいリストに 3つの列を用意します。

1.選択列(アイコン表示の条件になる列。別にタイトルでもok)
2.画像列(アイコンを表示させる列。当然短い名前が良い。「―」あたり推奨)
3.隠し列(一行テキスト。無限ループ予防のため。SP2 を適応している場合は不要)

ワークフローの基本設計はシンプルです。
・新規/変更時に動作
・(選択列)に入力された条件に応じて、(画像列)に対応したアイコンの URL を挿入

これだけ。
しかし、SP1 環境の場合、このままでは WF が無限ループしてしまいます。
そこで、WF の最初と最後にアクションを追加します。

最初:
列の比較 (選択列)と(隠し列)が等しい
ワークフローを停止する。

最後:
(選択列)の値を変数 x に出力。
変数 x の値を(隠し列)に入力。

ようは(選択列)に変更がない場合は、WF が起動してもすぐ終了するようにしている訳です。
これで、条件に応じたアイコンが表示されます!

WF を利用しているので、実際に表示されるまでややタイムラグがあるのは仕様です。

さて最後に、リストの設定で「コンテンツタイプの管理」を有効にして、「画像列」と「隠し列」を非表示にしておきます。これで完成です。

なお、アイコンは 16×16px くらいの大きさが適当です。
Icon Finder でサイズ指定して探すのが個人的にオススメ。

ところで、実はこのアイデア自体は相当古くて。
SharePoint2007 導入当時に、一度試しているんですよね。
しかし、その時は「予期せぬエラー」になって失敗していました。
何故ですかね?

SP1 で問題が修正されたのか、それとも当時の私がワークフローの「無限ループ」仕様を正しく把握していなかったことが原因なのか…今となっては確かめようがありません。
ま、とりあえず動くからよしとしましょう(笑)

列の値に応じてビューにアイコンを表示する(未完)
続・列の値に応じてビューにアイコンを表示する(未完)


Author

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