簡體   English   中英

使用CSOM powershell在Sharepoint Online中的查找列中導入值

[英]Import Values in lookup Columns in Sharepoint Online using CSOM powershell

我正在嘗試在查找列中導入值,我有國家/地區的父級列表和具有作為地區的查找列的子級列表,正在嘗試以下代碼,但似乎根本沒有用,我認為語法可能是錯誤的

###### Add all functions here##########
foreach($row in $CSVLocation)
{
$item["ABC_x0020_DEF"]=$row.'ABC DEF'

 ##############
#Get the Lookup Item from Parent List
 $LookupItem = $country.GetItems | Where-Object { $row.'Region' -eq $row["Region"]}

if($LookupItem -ne $null)
{
$RegionLookup = New-Object Microsoft.Sharepoint.SPFieldLookupValue($LookupItem.ID,$row.Region)

#Set the Lookup field value
$item["Region"] = $RegionLookup
}
}
}
 ##############
     $item.Update();
     $spoCtx.ExecuteQuery();

首先,您不是在使用CSOM對象,而是在服務器端對象。 它不是Microsoft.SharePoint.SPFieldLookupValue但是是Microsoft.SharePoint.Client.FieldLookupValue

創建用於在項目集合中找到合適項目的功能。

function Get-Item($Items, $ColumnName, $Value)
{
    foreach ($item in $Items.GetEnumerator())
    {
        if ($item[$ColumnName] -eq $Value)
        {
            return $item
        }
    }

    return $null
}

您正在錯誤地使用方法GetItems() 它應該利用CamlQuery對象。

$query = New-Object Microsoft.SharePoint.Client.CamlQuery
$LookupItems = $country.GetItems($query)

# Execute query and get items from SharePoint
$spoCtx.Load($LookupItems)
$spoCtx.ExecuteQuery()

您不必創建此FieldLookupValue對象,只需設置查找項目ID。

#Get the Lookup Item from Parent List items collection
$LookupItem = Get-Item -Items $LookupItems -ColumnName "Region" -Value $row.'Region'

if($LookupItem -ne $null)
{
    #Set the Lookup field value
    $item["Region"] = $LookupItem.Id
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM