💻

SharePoint Online で更新日時の表示形式を「標準」にする

2022/01/01に公開

https://zenn.dev/karamem0/articles/2015_04_27_190000

こちらの記事ではサーバー オブジェクト モデルを使っていたため SharePoint Online では動作しませんでしたので、クライアント オブジェクト モデルで書き直してみました。

https://github.com/karamem0/samples/tree/main/sharepoint-script-disable-friendly-format

[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")

$url = "{{site-url}}"
$username = "{{user-name}}"
$password = "{{password}}"

$password = ConvertTo-SecureString $password -AsPlainText -Force
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password)
$context = New-Object Microsoft.SharePoint.Client.ClientContext($url)
$context.Credentials = $credentials

$web = $context.Web
$context.Load($web.Lists)
$context.ExecuteQuery()

foreach ($list in $web.Lists) {
    $context.Load($list.Fields)
    $context.ExecuteQuery()

    $field = $list.Fields.GetByInternalNameOrTitle("Created")
    $field = New-Object Microsoft.SharePoint.Client.FieldDateTime($context, $field.Path)
    $context.Load($field)
    $context.ExecuteQuery()
    $field.FriendlyDisplayFormat = [Microsoft.SharePoint.Client.DateTimeFieldFriendlyFormatType]::Disabled
    $field.Update()
    $context.ExecuteQuery()

    $field = $list.Fields.GetByInternalNameOrTitle("Modified")
    $field = New-Object Microsoft.SharePoint.Client.FieldDateTime($context, $field.Path)
    $context.Load($field)
    $context.ExecuteQuery()
    $field.FriendlyDisplayFormat = [Microsoft.SharePoint.Client.DateTimeFieldFriendlyFormatType]::Disabled
    $field.Update()
    $context.ExecuteQuery()
}

サーバー オブジェクト モデルに慣れているとクライアント オブジェクト モデルは勝手が違って大変ですね。でも SharePoint Online を使う場合はどうしても必要になるので、覚えていかないといけない気がします。

Discussion