質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SharePoint

SharePointは、マイクロソフトにより開発された、ソフトウェア開発のドキュメント管理やコラボレーションを行うプラットフォームの総称です

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Office 365

Office 365は、マイクロソフトが販売している企業向けクラウドベースのグループウエアサービス。電子メールや予定表、Webサイト構築、オンラインストレージ、ビデオ会議などビジネスで必要な機能を備えています。クラウドサービスのため、自社での専用サーバーの設置の必要がないことが特徴です。

Q&A

解決済

1回答

9920閲覧

PowerShellで、SharePoint Online のアイテムを削除したい!!

mie.8

総合スコア28

SharePoint

SharePointは、マイクロソフトにより開発された、ソフトウェア開発のドキュメント管理やコラボレーションを行うプラットフォームの総称です

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Office 365

Office 365は、マイクロソフトが販売している企業向けクラウドベースのグループウエアサービス。電子メールや予定表、Webサイト構築、オンラインストレージ、ビデオ会議などビジネスで必要な機能を備えています。クラウドサービスのため、自社での専用サーバーの設置の必要がないことが特徴です。

0グッド

0クリップ

投稿2017/05/16 02:24

編集2017/05/16 08:26

前提・実現したい事

・PowerShellを使い、SharePoint Online上にあるリストのアイテムを削除したいです。

【例】
リスト名:都道府県
列名1:東日本 or 西日本
列名2:地方
列名3:都道府県

【実データ例】
リスト名:都道府県
列名1:東日本,東日本,西日本・・・
列名2:関東,関東,四国・・・
列名3:東京,千葉,香川・・・

等、全47都道府県が入力された「都道府県リスト」があるとします。

【ビュー】*全ビュー、"ID"も表示させる。
1.すべてのアイテム(既定のビュー)
2.東日本
3.西日本
4.北海道地方
5.東北地方
6.関東地方
7.中部地方



11.九州・沖縄地方


★ここで、「中部地方」のみ削除したいとします。★

PowerShellで作成したバッチを起動し、
①ビューを「中部地方」に切り替える。
②ビュー上の中部地方データのみ削除。
を行いたいですが、どの様にコードを記述するか分からず、ご質問させて頂きました。

発生している問題・Error Message

・ビューの内部データは取得出来ていると思うのですが、ビューの切替(変更)の仕方が分かりません。
実行結果は、「すべてのアイテム」の物になります。

★★そもそも、PowerShellを使いビューの変更は出来ますでしょうか?
★★ビューを変更して削除しなくても、「ビュー:すべてのアイテム」 から、
対象の項目・値だけを指定して削除は出来ますでしょうか。

よろしくお願い致します。

実際のソースコード

途中まで記述したコードになります。

PowerShell

1############################################### 2# ビューを変更し、アイテム削除 3############################################### 4 5# SDK の読み込み 6[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client") | Out-Null 7[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime") | Out-Null 8 9# 取得する SharePoint Online の URL 10$url = "SharePoint Online のURL" 11$accountName = "アカウント名" 12$passWord = ConvertTo-SecureString -AsPlainText -Force "パスワード" 13 14# SharePoint Online 認証情報 15$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($accountName, $passWord) 16 17# SharePoint Client Context インスタンスを生成 18$context = New-Object Microsoft.SharePoint.Client.ClientContext($url) 19$context.Credentials = $credentials 20 21# リストを取得 22$listName = "都道府県" 23$list = $context.Web.Lists.GetByTitle($listName) 24 25# ビュー取得 26$viewName = "すべてのアイテム" 27$view.DefaultView = $true 28$view = $list.Views.GetByTitle($viewName) 29 30#-----------------------------------------------# 31①ビューを「中部地方」に切り替えるコードを書く。 32333435#-----------------------------------------------# 36②ビュー上の中部地方データのみ削除。 37383940#-----------------------------------------------# 41 42# ビュー情報更新 43$context.Load($view) 44$context.ExecuteQuery() 45 46# ビューフィールド更新 47$viewFields = $view.ViewFields 48$context.Load($viewFields) 49 50# 更新 51$context.ExecuteQuery() 52$context.Dispose()

試した事

様々なキーワードで検索し、似たようなページを参考にしましたが上手く動作しませんでした。
【検索キーワード】
「PowerShell SharePoint ビュー」,「PowerShell SharePoint view」,「PowerShell SharePoint ビュー 変更」
「PowerShell SharePoint ビュー 編集」・・・。

補足情報(言語/FW/ツール等のVersion)

【動作環境】
・Window 7
・PowerShell Version 5.0
・SharePoint Online(Office365)

上記、コードを実行し取得した「$view」と「$context」

【$view】
Aggregations :
AggregationsStatus : Off
BaseViewId : 1
ContentTypeId : 0x
DefaultView : True
DefaultViewForContentType : False
EditorModified : False
Formats :
Hidden : False
HtmlSchemaXml : <View Name="{XXXX-XXXX-XXXX-XXXX-XXXX}" DefaultView="TRUE" MobileView="TRUE" MobileDefaultView="TRUE" Type="HTML" DisplayName="すべてのアイテム" Url="○○・・・/AllItems.aspx" Level="1" BaseViewID="1" ~・・・
Id : XXXX-XXXX-XXXX-XXXX-XXXX
ImageUrl : ○○・・・
IncludeRootFolder : False
ViewJoins :
JSLink : clienttemplates.js
ListViewXml : <View Name="{XXXX-XXXX-XXXX-XXXX-XXXX}" DefaultView="TRUE" MobileView="TRUE" MobileDefaultView="TRUE" Type="HTML" ~・・・
Method :
MobileDefaultView : True
MobileView : True
ModerationType :
OrderedView : False
Paged : True
PersonalView : False
ViewProjectedFields :
ViewQuery : <OrderBy><FieldRef Name="ID" /></OrderBy>
ReadOnlyView : False
RequiresClientIntegration : False
RowLimit : 30
Scope : DefaultValue
ServerRelativePath : Microsoft.SharePoint.Client.ResourcePath
ServerRelativeUrl : /○○/AllItems.aspx.
StyleId :
TabularView : True
Threaded : False
Title : すべてのアイテム
Toolbar :
ToolbarTemplateName :
ViewType : HTML
ViewData :
ViewFields : {ID, LinkTitle, Text, name...}
VisualizationInfo :
Context : Microsoft.SharePoint.Client.ClientContext
Tag :
Path : Microsoft.SharePoint.Client.ObjectPathIdentity
ObjectVersion :
ServerObjectIsNull : False
TypedObject : Microsoft.SharePoint.Client.View

【$context】
Web : Microsoft.SharePoint.Client.Web
Site : Microsoft.SharePoint.Client.Site
RequestResources : Microsoft.SharePoint.Client.RequestResources
FormDigestHandlingEnabled : True
ServerVersion : ○.○.○.○
Url : サイトのURL
ApplicationName : .NET Library
ClientTag :
DisableReturnValueCache : False
ValidateOnClient : True
AuthenticationMode : Default
FormsAuthenticationLoginInfo :
Credentials : Microsoft.SharePoint.Client.SharePointOnlineCredentials
WebRequestExecutorFactory : Microsoft.SharePoint.Client.DefaultWebRequestExecutorFactory
PendingRequest : Microsoft.SharePoint.Client.ClientRequest
HasPendingRequest : True
Tag :
RequestTimeout : 180000
StaticObjects : {[Microsoft$SharePoint$SPContext$Current, Microsoft.SharePoint.Client.RequestContext]}
ServerSchemaVersion : ○.○.○.○
ServerLibraryVersion : ○.○.○.○
RequestSchemaVersion : ○.○.○.○
TraceCorrelationId : XXXX-XXXX-XXXX-XXXX-XXXX

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2017/05/16 08:25

私は PowerShell は多少わかりますが SharePoint の知識は皆無です。逆に、SharePoint ならわかるけど PowerShell は分からないという人もいらっしゃるでしょう。条件から PowerShell を抜いて言語不問で尋ねた方が回答がつくのではないでしょうか?
Zuishin

2017/05/16 08:27

もし私が回答するのであれば、手探りですることになります。また最終目標が削除ということなので、実際に削除して確認していただくことになります。つまりこのデータ、最悪他のデータも消えてしまうことになりますが、それでもよろしいでしょうか? バックアップがとってあり、リストアが容易ならそのような手段もとれます。
mie.8

2017/05/16 08:34 編集

Zuishin様 ご回答ありがとうございます。 データに関してですが、テストデータなので全データ削除されてしまっても構いません。 作成はすぐに出来ますので。 参考サイト:https://translate.google.co.jp/translate?hl=ja&sl=en&u=http://get-spscripts.com/2012/02/managing-creating-and-deleting.html&prev=search こちらのサイトが、自分のやりたいことに一番近いかなーと思い、参考にしているのですが上手く行きませんでした。
Zuishin

2017/05/16 08:35

参考サイトの URL を間違えていませんか? 翻訳ページが開きました。
Zuishin

2017/05/16 08:45

アイテムの削除ということなので、https://msdn.microsoft.com/ja-jp/library/office/ee539976(v=office.14).aspx を参考に、まず削除すべきアイテムを列挙できることを確認し、各アイテムの DeleteObject() メソッドを呼び出し、コンテクストの ExecuteQuery() を呼び出してコミットすればいいのではないかと考えています。
mie.8

2017/05/16 09:00

アドバイスありがとうございます。試してみます!
guest

回答1

0

自己解決

PowerShell

1# ビューを基にアイテムを取得 2$query = New-Object Microsoft.SharePoint.Client.CamlQuery 3$query.ViewXml = $view.ListViewXml 4$items = $list.GetItems($query) 5 6# 更新 7$ctx.load($items) 8$ctx.ExecuteQuery()

上記コードで、表示されているビュー上のアイテムが取得出来、無事、削除処理プログラムが完成しました。
ご回答して頂き、ありがとうございました。

投稿2017/05/17 01:46

mie.8

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問