Как загрузить файл CSV в SharePointOnline с помощью Powershell - PullRequest
0 голосов
/ 19 сентября 2019

В своем списке sharepoint я добавил «заголовок», «автор» и компанию.Затем я пытаюсь импортировать мой CSV-файл в мой список sharepoint и сталкиваюсь со следующей ошибкой:

Исключение вызывает "ExecuteQuery" с аргументом (ами) "0": "Недопустимые данные былииспользуется для обновления элемента списка. Поле, которое вы пытаетесь обновить, может быть доступно только для чтения. "В C: \ Users \ xxxx \ Documents \ UploadCSV.ps1: 36 char: 5 + $ Context.ExecuteQuery () + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: XmlException

Вот мой фрагмент кода:

Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"  
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"  

#Variables for Processing
$SiteUrl = "https://tenant.com/sites/TeamSite/"
$ListName="Contacts"
$ImportFile ="c:\Scripts\test.csv"
$UserName="xxx@tenant.com"
$Password ="password"

#Setup Credentials to connect
$Credential = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,(ConvertTo-SecureString $Password -AsPlainText -Force))

#Set up the context
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl) 
$Context.Credentials = $credential

#Get the List
$List = $Context.web.Lists.GetByTitle($ListName)

#Get the Data from CSV and Add to SharePoint List
$data = Import-Csv $ImportFile
Foreach ($row in $data) {

    #add item to List
    $ListItemInfo = New-Object Microsoft.SharePoint.Client.ListItemCreationInformation
    $Item = $List.AddItem($ListItemInfo)
    $Item["Author"] = $row.Author
    $Item["Company"] = $row.Company
    $Item.Update()
    $Context.ExecuteQuery() 

}

1 Ответ

0 голосов
/ 20 сентября 2019

Автор - системный сотрудник, если в файле CSV Автор - это имя пользователя, например «user@tenant.onmicrosoft.com», его нельзя установить напрямую.Измените цикл Foreach следующим образом:

$data = Import-Csv $ImportFile

    Foreach ($row in $data) {

        #add item to List
        $ListItemInfo = New-Object 
        Microsoft.SharePoint.Client.ListItemCreationInformation
        $Item = $List.AddItem($ListItemInfo)
        $User = $Context.Web.EnsureUser($row.Author)
        $Context.Load($user)
        $Item["Title"]="New Item Added"
        $Item["Author"] = $user
        $Item["Company"] = $row.Company
        $Item.Update()
        $Context.ExecuteQuery() 

    }
...