以前の記事で、SharePoint Online のリストにアイテムを作成する PnP PowerShell を紹介しましたが、実際に試してみようとすると、多くの方が疑問に思うであろうことがあります。
それは、「あれ?この列にはどういう値を指定したら良いんだ?」ということです。SharePoint リストには、いくつかの種類の列を作成できますが、種類によって PnP PowerShell からの値の指定方法も変わります。
この記事では、私が検証して確認できた指定方法をまとめておきます。(この記事は、以前の記事からの続きです)
一行テキスト
まずは、簡単な一行テキストです。そのまま文字列を指定すれば大丈夫です。
$data.Add("InternalName", "texttexttext")
複数行テキスト
複数行テキストも、一行テキストと同じように指定できます。改行がある場合は、次のように指定できました。このサンプルでは、変数 $lines
に指定したい値をあらかじめ入れています。
$lines = @" texttexttext texttexttext texttexttext "@ $data.Add("InternalName", $lines)
数値
数値も簡単ですね。そのまま数値を指定します。
$data.Add("InternalName", 37430)
はい/いいえ
こちらは $true
または $false
で指定します。「はい」なら $true
で、「いいえ」なら $false
ですね。
$data.Add("InternalName", $true)
単に文字列として True や False を指定しても大丈夫でした。CSV などでデータを用意するときは、こちらの方が嬉しいかもしれませんね。
$data.Add("InternalName", "True")
個人
ひとの情報を含めるには、メールアドレス(ログイン名)が利用できます。ちなみに、メールアドレスからユーザーの情報を取得する処理が裏側で走るためか、アイテム追加時は少し処理に時間がかかります。
$data.Add("InternalName", "mike@example.com")
個人(複数)
ひとを複数指定する場合は、配列を使います。
$persons = "mike@example.com", "john@example.com" $data.Add("InternalName", $persons)
日付と時刻
日付と時刻は、次のように見慣れたテキストで指定することができますが、この指定方法では UTC で値が入ってしまいます。
$data.Add("InternalName", "2022/05/09 12:30")
時刻の指定をローカル時間にするには、ISO8601 の表記に従います。
$data.Add("InternalName", "2022-05-09T12:30+09:00")
選択肢
ひとつだけを指定する選択肢であれば、テキストを指定するだけです。
$data.Add("InternalName", "選択肢 1")
選択肢(複数)
選択肢で複数の値を指定するときは、配列を使います。
$choices = "選択肢 1", "選択肢 2" $data.Add("InternalName", $choices)
ハイパーリンク
ハイパーリンク列は、URL をテキストで指定するだけでも大丈夫です。
$data.Add("InternalName", "https://idea.tostring.jp")
URL 以外に代替テキストを指定して、ビュー上の表記を変えることもできます。こちらは、ちょっとだけややこしい。
$link = New-Object Microsoft.SharePoint.Client.FieldUrlValue $link.Url = "https://idea.tostring.jp" $link.Description = "idea.toString();" $data.Add("InternalName", $link)
通貨
通貨は数値と同様に指定できます。
$data.Add("InternalName", 34657)
管理されたメタデータ
管理されたメタデータは、他の列に比べてややこしいです。列に値を指定するには、用語の ID を指定する必要があります。
$data.Add("InternalName", "a8e3db42-3b32-4d26-9692-c534413a25b7")
この ID を取得するには、サイトの設定にある [用語ストアの管理] から指定したい用語の設定を開き、[使用設定] タブにある「一意識別子」をコピーしておきます。

管理されたメタデータ(複数)
管理されたメタデータで複数の値を指定するときは、配列を使います。
$metadata = "a8e3db42-3b32-4d26-9692-c534413a25b7", "7a86bb31-d281-4fac-b1f4-bec20ce93eab" $data.Add("InternalName", $metadata)
ルックアップ
同じサイトにある他のサイトを参照するルックアップ列では、その紐づけは参照先のリストアイテムの ID によって行われています。そのため、値の指定も ID を数値として指定するだけです。
$data.Add("InternalName", 3)
研究中のもの
場所列と画像列は、現在研究中です。
まとめ
PnP PowerShell から SharePoint リストにアイテムを登録するときに、まずは抑えておきたい列の種類別の値の指定方法でした。