そんな感じ

情報は百代の過客にして、行かふ話題も又旅人也。 ネットの上に生涯をうかべ、流行とらえて老をむかふる物は、日々調査にして調査を栖とす。 古人も多く調査に死せるあり。​

SharePointカスタマイズの味方『SPUtility.js』について調べてみた

SharePointリストのちょっとしたカスタマイズには超便利

なるべくJavaScriptゴリゴリ書くような小難しいカスタマイズはしたくない。でもちょっとしたカスタマイズはしたい。
(新規作成の時は入力できるけど、編集時は入力できない項目を作りたい、とか)
そんなワガママな悩みを抱えたSharePoint技術者の方の強い味方、『SPUtility.js(http://sputility.codeplex.com/)』が非常に便利で一時期、非常にお世話になっておりました。
リンク先を見てもらえばわかる通りコードが非常にシンプルで、「JaveScript??何それおいしいの??」というような方でも(かろうじて)読みやすく書けるようになっているので保守性もバッチリです。

『SPUtility.js』の仕組みを調べてみた

編集フォームを表示中のソースコードのうち、『表示名「タイトル」、内部名「Title」、属性「1行テキスト」』の入力フォーム部分を切り出してみました。

<tr>
    <td class="ms-formlabel" width="113px" valign="top" nowrap="true">
        <span class="ms-h3 ms-standardheader" id="Title">
            <nobr>タイトル
                <span class="ms-accentText" title="これは必須フィールドです。"> *</span>
            </nobr>
        </span>
    </td>
    <td class="ms-formbody" width="350px" valign="top">
        <!-- FieldName="タイトル"
             FieldInternalName="Title"
             FieldType="SPFieldText"
          -->
        <span dir="none">
            <input value="" maxlength="255" id="Title_fa564e0f-0c70-4ab9-b863-0177e6ddd247_$TextField" title="タイトル 必須フィールド" style="ime-mode : "
                class="ms-long ms-spellcheck-true" type="text">
            <br>
        </span>
    </td>
</tr>

注目すべきは10~13行目の部分。

        <!-- FieldName="タイトル"
             FieldInternalName="Title"
             FieldType="SPFieldText"
          -->

SPUtility.jsのソースコードを確認すると、どうやらこのコメントを探して表示名が「タイトル」の項目(あるいは内部名が「Tiltle」)の項目を特定しているようです。

わぉ!!

この仕様から考えるとInfoPathはもちろんのこと、SharePoint Designerでカスタマイズしたフォームを使うのも厳しそうです。
やっぱり適用範囲はちょっとしたカスタマイズのみで、がっつりとしたカスタマイズを行うときは素直にがっつりカスタマイズするしかなさそう。
(というかがっつりカスタマイズそのものが非推奨な気が・・・)

まとめ

  • ちょっとしたカスタマイズならSPUtility.jsは超便利
  • SharePoint Designerなんかでカスタマイズするレベルだとちょっと辛い
  • そもそも今はモダンUI + Formsを使った方が・・・

そうとう長い間寝かしていたらモダンUIが出てきちゃったので行き場を失ったメモの供養でした そんな感じ