使用 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
}
我正在尝试在查找列中导入值,我有国家/地区父列表和一个子列表,其中查找列作为区域,正在尝试下面的代码,但它似乎根本不起作用,我想我错了语法可能是
###### 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
}