JavaScriptを利用して、列に既定値を設定する(1)

SharePointは、列の値に「既定値」を設定することがで出来ます。しかし、一部の列形式については、既定値を指定することが出来ません。具体的には複数行テキストユーザー列です。

しかし、JavaScriptを利用すれば、これらの列に強制的に既定値を適用することができます。

NewForm.aspxを編集モードで開き(初回はToolPaneView=2指定が必要です)、コンテンツエディタWebパーツを挿入します。
このソースを編集し、スクリプトを記述します。

以下は、複数行テキストの場合です。

[code]
<script type="text/javascript">
_spBodyOnLoadFunctionNames.push( "setDefault" );
function setDefault()
{
var str = "<div>■</font></div><div>&nbsp;</div><div>&nbsp;</div><div>■</div><div>&nbsp;</div><div>&nbsp;</div><div>■</div><div>&nbsp;</div><div>&nbsp;</div><div>■</div><div>&nbsp;</div><div></div>";
document.getElementById( "<font color="red">ctl00$m$g_2bc357e9_d015_4402_b658_8ede83d687f4$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField_spSave</font>" ).innerText = str;
}
</script>[/code]
document.getElementByIdの値は、値を挿入する列の「name」もしくは「id」を指定します。
この値を確認するには、フォームのHTMLソースを開いて、列名の後に続く textarea タグのアトリビュートを参照して下さい。
「name」でも「id」でも動作しますが、原則として「id」を利用することをお勧めします。
また、SharePointの列には「innerHTML」は利用できませんので、「innerText」に、直接HTMLタグを指定します。

複数テキスト列にHTMLタグを設定する際のポイントは、br を利用しないことです。
改行は、全て div で指定します。
これは、タグに br が含まれている場合、以後、ユーザーによる改行(キーボードのENTERキー)は全て p で処理されてしまうため、不必要な行間が空く、というSharePointのリッチテキストエディタの仕様によるものです。

続きます


Author

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