SharePoint で JavaScript を利用してカスタマイズを行う際に、URL のクエリストリングの値を取得したいといった場合があります。そうした時に、通常の Web サイトではクエリストリングを処理・分解する関数を書いたりするわけなのですが、SharePoint では標準で読み込まれているスクリプト内に、値を取得するための関数が用意されているようです。

GetUrlKeyValue(parameter, noDecode, url)

クエリストリングの値を取得するだけであれば、こちらの関数が簡単です。各引数の意味は、下記の通りのようです。

引数 説明
parameter (必須)値を取得したいクエリストリングのパラメータ名
noDecode (任意)値をデコードしない場合に true。既定値は false なので値はデコードされます。マルチバイトの値などは URL エンコードされていますので、false を指定することで人が読める値に直した状態で取得できます。
url (任意)指定した URL からクエリストリングの値を取得します。指定しない場合は、ブラウザで表示している URL が利用されます。

利用方法のサンプルです。

var param = GetUrlKeyValue('param', false, 'https://contoso.com?param=value1');

単純に値をとりたい場合は、最初の引数のみを指定します。

var param = GetUrlKeyValue('param');

JSRequest

こちらを利用すると、クエリストリングの値だけではなく、URL からファイル名の部分(Home.aspx など)やサーバー相対パス(/SitePages/Home.aspx など)を抜き出すことができます。

利用方法のサンプルです。

JSRequest.EnsureSetup(); //利用前に必要です。
var fileName = JSRequest.FileName;
var pathName = JSRequest.PathName;
var param = JSRequest.QueryString['param'];

ただし、ファイル名などを取得する場合、2013 で「ダウンロード最小化戦略」が有効になっていると、start.aspx が取得されてしまいますので注意が必要です。

さいごに

今回の情報は、下記の記事を参考にしました。

Some useful Javascript variables/functions in Sharepoint
https://praneethmoka.wordpress.com/2012/01/12/some-useful-javascript-variablesfunctions-in-sharepoint/

ここで紹介したもの以外にも便利に利用できそうなものが色々紹介されています。SharePoint の JavaScript は、なかなか奥が深そうです。