locked
SharePointOnline PowerShell にて 複数のリスト列に対して検索を行い削除または変更 RRS feed

  • 質問

  • SharePointOnline PowerShell にて 複数のリスト列に対して検索を行い、
    行を特定して変更、削除するにはどうすれば良いでしょうか?

    例えば以下のカスタムリストが存在したとして①、②を実現するには。

       A列    B列   C列
       白菜    埼玉  500円
       白菜    東京  450円
       大根    埼玉  300円
       大根    千葉  340円
       大根    大阪  300円


    ①条件:白菜、東京のデータを削除する。

    ②条件:大根、千葉のデータの金額を、600円に変更する。



    2018年2月1日 10:33

回答

  • とりあえず削除するほうはこんな感じでできました。SQLのように一気に削除することはできないので、1件ずつ削除していくことになります。

    $list = $context.Web.GetList('/Lists/List1')
    $query = New-Object Microsoft.SharePoint.Client.CamlQuery
    $query.ViewXml = @'
    <View>
      <Query>
        <Where>
          <And>
            <Eq><FieldRef Name="ColumnA" /><Value Type="Text">白菜</Value></Eq>
            <Eq><FieldRef Name="ColumnB" /><Value Type="Text">東京</Value></Eq>
          </And>
        </Where>
      </Query>
    </View>
    '@
    $query.ViewXml
    $items = $list.GetItems($query)
    $context.Load($items)
    $context.ExecuteQuery()
    
    foreach ($item in $items) {
        $item.DeleteObject()
        $context.ExecuteQuery()
    }
    

    2018年2月8日 9:00

すべての返信

  • とりあえず削除するほうはこんな感じでできました。SQLのように一気に削除することはできないので、1件ずつ削除していくことになります。

    $list = $context.Web.GetList('/Lists/List1')
    $query = New-Object Microsoft.SharePoint.Client.CamlQuery
    $query.ViewXml = @'
    <View>
      <Query>
        <Where>
          <And>
            <Eq><FieldRef Name="ColumnA" /><Value Type="Text">白菜</Value></Eq>
            <Eq><FieldRef Name="ColumnB" /><Value Type="Text">東京</Value></Eq>
          </And>
        </Where>
      </Query>
    </View>
    '@
    $query.ViewXml
    $items = $list.GetItems($query)
    $context.Load($items)
    $context.ExecuteQuery()
    
    foreach ($item in $items) {
        $item.DeleteObject()
        $context.ExecuteQuery()
    }
    

    2018年2月8日 9:00
  • しのはらさん

    頂いたコードの内容で、1件毎の削除が実施できました。

    ご協力ありがとうございました。

    2018年2月16日 4:32