PnP ve PowerShell ile SharePoint Formunda Alanları Gizleme [O365]
calendar_month 5 Ekim 2019
Oluşturduğum küçük kod parçacıklarını ve betikleri artık yalnızca OneDrive’ımda tutmak yerine burada yayınlamaya karar verdim. SharePoint formunda alanları gizleme konusundaki ilk makale bu.
Sorun
Bir alanın SchemaXml’inde görünürlük ShowInDisplayForm, ShowInNewForm ve ShowInEditForm ile kontrol edilebilir. Yüzeyde yalnızca alanı içerik türünde gizleme seçeneği var. Bu nedenle özel göster/gizle mümkün değil.
PnP ve PowerShell
PnP PowerShell komutları CSOM’un etrafında bir sarmalayıcı oluşturur, böylece daha az kod satırı yazılır.
Set-PnPField ile daha da kısa:
Connect-PnPOnline -Url $siteUrl
Set-PnPField -List $listTitle -Identity $fieldName -Values @{Description="Bu benim alanım"}
Alanları Gizleme
HideFieldInList.ps1 betiği:
Param(
[parameter(Mandatory=$true)][alias("url")]$siteUrl,
[parameter(Mandatory=$true)][alias("list")]$listTitle,
[parameter(Mandatory=$true)][alias("field")]$fieldName,
[alias("display")]$hideInDisplayForm=$true,
[alias("new")]$hideInNewForm=$true,
[alias("edit")]$hideInEditForm=$true
)
Connect-PnPOnline -Url $siteUrl -Credentials (Get-Credential)
$field = Get-PnPField -List $listTitle -Identity $fieldName
if($field.Sealed){ throw 'field is sealed' }
if($field.Hidden){ throw 'field is hidden' }
$field.SetShowInDisplayForm(!$hideInDisplayForm)
$field.SetShowInNewForm(!$hideInNewForm)
$field.SetShowInEditForm(!$hideInEditForm)
try{
$field.UpdateAndPushChanges($true)
$field.Context.ExecuteQuery()
} catch {
throw "error while applying changes for field: $field ... $($_.Exception.Message)"
}
Write-Host "field updated" $field
Kullanım
Tüm formlarda gizle:
./HideFieldInList.ps1 -url https://contoso.sharepoint.com/sites/Ornek -list "Listem" -field Alanım
Yalnızca Düzenle ve Yeni formda gizle:
./HideFieldInList.ps1 -url https://contoso.sharepoint.com/sites/Ornek -list "Listem" -field Alanım -display $false