Копировать столбец списка в новый столбец того же списка в Sharepoint - PullRequest
0 голосов
/ 19 июня 2020

Я хочу скопировать все значения столбца в новый столбец. В качестве решения я готовлю рабочий процесс:

SET FIELD TO VALUE and make the workflow start when item update

Но у меня 16000+ строк, и вручную обновить каждую из них сейчас невозможно. Я также пробовал использовать Microsoft Flow, но безуспешно.

Кто-нибудь может предложить способ достижения этой цели.

1 Ответ

0 голосов
/ 19 июня 2020

Я бы посоветовал PowerShell для такой «миграции». Скрипт из здесь , скрипт должен быть запущен на сервере SharePoint.

Add-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction SilentlyContinue

#Parameters
$SiteURL = "http://siteurl/"
$listName = "list"

$web = Get-SPweb $SiteURL

#Use the Display Names
$CopyFromColumnName = "Description" #column copy source
$CopyToColumnName = "Desc"  #destination column

#Get the List
$list = $web.lists[$ListName]

#Get all Items 
$Items = $list.Items

ForEach ($Item in $items)
{
   #copy data from one column to another
   $item[$copyToColumnName] = $item[$copyFromColumnName]

   #Do a system update to avoid Version and to Keep same metadata
   $item.SystemUpdate($false)
}

Для SharePoint Online см. этот поток , замените итерацию logi c как пейджинг.

$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
    $Query.ViewXml = "<View Scope='RecursiveAll'><Query><OrderBy><FieldRef Name='ID' Ascending='TRUE'/></OrderBy></Query><RowLimit Paged='TRUE'>$BatchSize</RowLimit></View>"

    $Counter = 0
    #Batch process list items - to mitigate list threshold issue on larger lists
    Do { 
        #Get items from the list
        $ListItems = $List.GetItems($Query)
        $Ctx.Load($ListItems)
        $Ctx.ExecuteQuery()

        $Query.ListItemCollectionPosition = $ListItems.ListItemCollectionPosition

        #Loop through each List item
        ForEach($ListItem in $ListItems)
        {
            //to do copy field value
            $Counter++
            Write-Progress -PercentComplete ($Counter / ($List.ItemCount) * 100) -Activity "Processing Items $Counter of $($List.ItemCount)" -Status "Searching Unique Permissions in List Items of '$($List.Title)'"
        }
    } While ($Query.ListItemCollectionPosition -ne $null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...