LoginSignup
2
1

More than 1 year has passed since last update.

PnP PowerShell で Sharepoint を操作しよう: (3) 簡単なリストを作ろう

Last updated at Posted at 2019-05-27

皆様こんにちは。

3回目は、簡単にSharePoint のリストを作るところをお見せしたいとおもいます。

サイトもPnP で作れるのですが、ここはわたしは手作業で行いました。
リストを作成するには、New-PnPList コマンドを使います。
ポイントは、リスト名をいきなり日本語で作成せず、コマンドで触りやすいように英字の名前を先に与え、表示名として日本語名を後から与えるところです。
英字の名前は -url で与えて、日本語の表示名は -title で与えます。

new-pnplist -title "日本語名" -url "Alphabet" -Template genericList

手作業でリストを作る際も、作成時には英字で作成してそれから日本語にリネームすることで、urlに現れる内部名を英字にすることができます。

-Tenplate でリストの種別を選びます。SharePointで「リスト」を選ぶのに相当するのは"genericList" です。ほかにDocumentLibrary、Contacts、Events、 Tasks なども定義されています。みんなリストの一種なのですね。

サイトのリファレンスではわかりにくいのですが、-Template で使える名前は ListTemplateType に一覧があります。

image.png

さあ、日本語の名前でリストが作られました。
URLのほうは"Alphabet" となっています。

初期状態では、「名前」(Title) だけが存在します。
ここでは、わたしの実例に基づいて、”商品コードマスタ"(ProductCode)というリストを作成します。

フィールドは
Title: "名前"-> "商品名"に変更、インデックスあり
code: "商品コード"、インデックスあり
Modified (更新日時):インデックスあり
としてみます。

使う命令は
Add-PnpField
[Set-PnpField] (https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/set-pnpfield?view=sharepoint-ps)
[Set-PnpList] (https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/set-pnplist?view=sharepoint-ps)
Add-PnpView,
です。

    #リスト作成
    $Title = "商品コードマスタ"
    $Url="ProductCode"
    New-PnPList  -url  $Url -Title $Title -Template GenericList
    #フィールド追加
    Add-PnPField -List $Url -DisplayName "商品コード" -InternalName "code" -Type Text  -AddToDefaultView

    #Title 列の標準名は「名前」なので、「商品名」に変更する。またindex を有効にする
    Set-PnPField -List $Url -Identity "Title" -Values @{"Title"="商品名"; "Indexed"=$true} 
    #既存列の属性を変える。名前を指定するときは、InternalName で指定した"code"のほうを使う
    Set-PnPField -List $Url -Identity "code" -Values @{"Indexed"=$true} 
    Set-PnPField -List $Url -Identity "Modified" -Values @{ "Indexed"=$true} 

    Set-PnPList -Identity $Url -EnableAttachments $false

ここまでは難易度は低めでしょうか。

ここで、一つ目のハードルです。
Add-PnpView で、ビューを一つ作ります。作るだけならリファレンス通りに

Add-PnPView -List "Demo List" -Title "Demo View" -Fields "Title","Address"

でいいのですが、それ以上のことをしようとすると、-Query を指定する必要があります。

-Query については、

-Query
valid CAML Query.
Type: String

という説明しかありません!
CAML (コラボレーションアプリケーションマークアップ言語 の解説をみても、範囲が広すぎます。
SharepointのList のQuery 要素 (リスト) の解説のほうが今回の目的にあっています。。

わたしがここでやりたいのは、ソート順の定義です。CAMLなんて知らないよーと困りましたが、見よう見まねでこんなクエリーを書いたら動きました。

    #ビューの追加 フィールドおよびクエリ内での参照先は英語のInternalName のほうを使う
    Add-PnPView -List $Url -Title "コード昇順" -Fields "code","Title" -SetAsDefault -Query "<OrderBy><FieldRef Name='code' Ascending='true'/></OrderBy>" -Paged

最後は、SharePoint の左欄のナビゲーションリンクにこのリストを追加します。

    #左のナビゲーション(クイックランチ)に登録
    Add-PnPNavigationNode -Title $Title -Url $Url -Location QuickLaunch 

今回はここまでにします。

CAML は結構何度も出てくることになります。

Building CAML for querying List in SharePoint
Atish Dipongkor, 19 Oct 2016
という記事が、PnP PowerShell 用ではないですが、ListとCAMLの対応関係を説明していてわかりやすいと思います。
この記事には、REST APIでリストの情報を取得して、CAML部分を抽出するテクニックが出てきます。あとから知って、これ使えたら楽できたのに!と泣きました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1