PowerShellでリストアイテムを作成する

SharePoint

前回はリスト作成をやったので、今回はリストアイテムの作成についてやっていきます(∩´∀`)∩

事前準備

PowerShellのスクリプトを実行する際に必要なSDK等がありますので、その辺のインストール等がまだの方は↓の記事を参考に準備しておいてください(∩´∀`)∩

SharePoint Online Client Component SDK というヤツを使います。

PowerShellからSharePointOnlineを操作する為の準備
今回はPowerShellからSharePoint Onlineを操作するための下準備について説明してみます。 PowerShellによる操作 まずSharePoint OnlineをPowerShellで操作するには2つの方法が用意されて...

リストの取得

接続等行った状態から説明していきます。その辺は記事末尾のサンプルコード内には書いておきますので、そちらも参考にしていただけたらと。

今回は前回作成した ほげほげ(hogehoge)というリストを対象にアイテム作成します。

で、まずはリストを取得します。

# リスト取得
$list = $Context.Web.Lists.GetByTitle("hogehoge")

# リストIDが分かっている場合、GetByIdでもOK
# $list = $Context.Web.Lists.GetById("IDの文字列")

GetByTitle か GetByID でリストを取得します。タイトルを使う時は内部名でも表示名でもどちらでもOKです。

IDで取得する場合は下記記事の方法などを使うか、PowerShellでなんやかやするなどしてIDを取得しておきます。

SharePointOnlineでリストのIDを取得する
監査ログを見るときや、プログラムからなんやかんやする時に必要になったりするリストID。今回はその取得方法というか、確認方法について簡単に説明してきます~(∩´∀`)∩

オブジェクトの作成とか値の設定とか

# オブジェクト作成
$CInfo = New-Object Microsoft.SharePoint.Client.ListItemCreationInformation

# 取得したリストにアイテム作成用のオブジェクトを突っ込む
$item=$list.AddItem($CInfo)

# タイトルを設定 タイトル以外も入れるならこの辺で
$item["Title"]="テストアイテム2!"

リストアイテム作成用のオブジェクトみたいなのを作ったり、リストアイテムの各値を設定したりとかします。

アイテムの値なんかは $item[] に内部列名指定して入れていきます。大文字小文字の区別があるので気を付けましょう。

更新その他

最後に更新やらロードやらえくせきゅーとやらしておきます。

# 更新
$item.Update()

# コンテキストにロード
$Context.Load($item)

# 上記の更新を実行
$Context.ExecuteQuery()

# 後始末
$Context.Dispose()

ここまでの処理を実行すると↓のようにアイテムが作成されます。

まとめ

リストをデータベース代わりに使うような場合だとか、何かのマスタデータを登録するような場面で使えるかな~~と思います。

趣味で勉強とかして覚えたんですけども、実務でまだ使ったことなかったり。。(ノ∀`)

サンプルコード

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime") | Out-Null
 
#接続情報等
$SiteUrl = "https://xxxxxx.sharepoint.com/testsite" 
$Account = "	administrator@xxxxxx.onmicrosoft.com" 
$Password = Read-Host -Prompt "Enter Password." -AsSecureString
 
# Credential作成
$Credential = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Account, $Password) 
 
# Context作成
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$Context.Credentials = $Credential

# リスト取得
$list = $Context.Web.Lists.GetByTitle("hogehoge")
# リストIDが分かっている場合、GetByIdでもOK
# $list = $Context.Web.Lists.GetById("IDの文字列")

# オブジェクト作成
$CInfo = New-Object Microsoft.SharePoint.Client.ListItemCreationInformation

# 取得したリストにアイテム作成用のオブジェクトを突っ込む
$item=$list.AddItem($CInfo)

# タイトルを設定 タイトル以外も入れるならこの辺で
$item["Title"]="テストアイテム!"

# 更新
$item.Update()

# コンテキストにロード
$Context.Load($item)

# 上記の更新を実行
$Context.ExecuteQuery()

# 後始末
$Context.Dispose()

コメント

タイトルとURLをコピーしました