以前の記事で、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 リストにアイテムを登録するときに、まずは抑えておきたい列の種類別の値の指定方法でした。