SharePoint Online에서 항목 업데이트 상태 얻기(ChangeQuery)

15897 단어 SharePointPowerShell
블로그에서 전재

경위



SharePoint Online의 한 목록에서 정기적으로 업데이트 정보를 가져와 다른 저장소에 저장하는 작업을 수행했기 때문에 현재 사용한 ChangeQuery에 대한 메모.

환경



클라이언트 환경


  • Windows 10 Pro
  • PowerShell 5.1.17134.165

  • SharePoint Online 환경


  • Site URL: https://.sharepoint.com/sites/example
  • 목록 이름: SyncBase



  • 열 이름
    내부 열 이름
    열 유형


    제목
    Title
    한 줄 텍스트

    코멘트
    Comment
    한 줄 텍스트


    코드



    첫째, 평소 SharePoint Online에 로그인할 때까지입니다.
    [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
    [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
    
    # SharePoint Online の URL
    $siteUrl = 'https://<tenant>.sharepoint.com/sites/example'
    # ユーザー名
    $user = '[email protected]';
    # パスワード
    $secure = Read-Host -Prompt "Enter the password for ${user}(Office365)" -AsSecureString;
    # SharePoint Online 認証情報
    $credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($user, $secure);
    # SharePoint Client Context インスタンスを生成
    $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteURL)
    $ctx.Credentials = $credentials
    

    그런 다음 ChangeQuery 인스턴스를 생성하고 설정합니다.
    # ChangeQueryの定義
    $cq = [Microsoft.SharePoint.Client.ChangeQuery]::new($false, $false)
    $cq.Item = $true          # アイテムの更新が対象
    $cq.Add = $true           # 追加したアイテム情報が対象
    $cq.Update = $true        # 修正したアイテム情報が対象
    $cq.DeleteObject = $true  # 削除したアイテム情報が対象
    

    ChangeQeury 인스턴스를 생성할 때의 인수는 다음과 같습니다.
    new(allChangeObjectTypes:boolean, allChangeTypes:boolean)
    ALL 라든지 사용하는 것보다, 개인적으로는 코드로 설정하는 편이 알기 쉽다고 생각한다

    나머지는 목록에서 항목을 얻기 만
    # 対象リスト
    $list = $ctx.Web.Lists.GetByTitle('SyncBase')
    
    # 対象リストから更新のあったアイテムを取得
    $changeItems = $list.GetChanges($cq)
    $ctx.Load($changeItems)
    $ctx.ExecuteQuery()
    

    취득한 건수를 확인
    PS > $changeItems.Count
    0
    

    우선 0건
    목록 SyncBase 항목 추가



    그 후, 데이터 취득 처리를 다시 시도한다.
    $changeItems = $list.GetChanges($cq)
    $ctx.Load($changeItems)
    $ctx.ExecuteQuery()
    
    PS > $changeItems.Count
    1
    

    획득한 아이템 정보
    PS > $changeItems
    
    ActivityType         : 
    ContentTypeId        : 
    Editor               : 
    EditorEmailHint      : 
    EditorLoginName      : 
    FileSystemObjectType : 
    FileType             : 
    Hashtag              : 
    Hidden               : 
    ItemId               : 1
    ListId               : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    ListTemplate         : 
    ListTitle            : 
    ServerRelativeUrl    : 
    SharedByUser         : 
    SharedWithUsers      : 
    Title                : 
    WebId                : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    ChangeToken          : Microsoft.SharePoint.Client.ChangeToken
    ChangeType           : Add
    RelativeTime         : 
    SiteId               : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    Time                 : 2018/07/21 11:24:50
    Context              : Microsoft.SharePoint.Client.ClientContext
    Tag                  : 
    Path                 : 
    ObjectVersion        : 
    ServerObjectIsNull   : False
    TypedObject          : Microsoft.SharePoint.Client.ChangeItem
    

    ItemId와 ChangeType이 Add에서 검색되었음을 알 수 있습니다.

    다음으로 편집하여 ItemId, ChageType, Time으로 짜서 다시 시도해 봅니다.
    PS > $changeItems | Select-Object ItemId, ChangeType, Time
    
    ItemId ChangeType Time               
    ------ ---------- ----               
         1        Add 2018/07/21 11:24:50
         1     Update 2018/07/21 12:15:46
    

    마지막으로 삭제하고 ItemId, ChageType, Time으로 짜서 다시 시도합니다.
    PS > $changeItems | Select-Object ItemId, ChangeType, Time
    
    ItemId   ChangeType Time               
    ------   ---------- ----               
         1          Add 2018/07/21 11:24:50
         1       Update 2018/07/21 12:15:46
         1 DeleteObject 2018/07/21 12:26:23
    

    이번에는 이것으로 끝납니다!

    참고


  • Query SharePoint change log with ChangeQuery and ChangeToken
  • SP.ChangeQuery 객체
  • 좋은 웹페이지 즐겨찾기