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