BoardThreadsとBoardReplies

& {
    $ErrorActionPreference = "Stop"

    # 接続先を確認
    $web = Get-PnPWeb
    if ($web.Url.TrimEnd("/") -ne "https://vsn365.sharepoint.com/sites/kume_test") {
        throw "接続先が想定と異なります: $($web.Url)"
    }

    # 既存リストがあれば停止
    $existing = @(Get-PnPList)
    foreach ($name in @("BoardThreads", "BoardReplies")) {
        if ($existing.Title -contains $name) {
            throw "$name は既に存在します。作成処理を停止しました。"
        }
    }

    # リスト作成
    New-PnPList -Title "BoardThreads" -Template GenericList | Out-Null
    New-PnPList -Title "BoardReplies" -Template GenericList | Out-Null

    # 両方に共通する列
    foreach ($name in @("BoardThreads", "BoardReplies")) {

        # 本文:複数行、プレーンテキスト
        Add-PnPFieldFromXml -List $name -FieldXml '
        <Field Type="Note"
               Name="Body"
               StaticName="Body"
               DisplayName="Body"
               RichText="FALSE"
               AppendOnly="FALSE"
               NumLines="6" />
        ' | Out-Null

        # 削除フラグ:既定値「いいえ」
        Add-PnPFieldFromXml -List $name -FieldXml '
        <Field Type="Boolean"
               Name="IsDeleted"
               StaticName="IsDeleted"
               DisplayName="IsDeleted">
            <Default>0</Default>
        </Field>
        ' | Out-Null
    }

    # スレッド:カテゴリ
    Add-PnPField -List "BoardThreads" `
        -DisplayName "Category" `
        -InternalName "Category" `
        -Type Choice `
        -Choices "質問","雑談","要望","お知らせ" `
        -AddToDefaultView | Out-Null

    # 返信:親スレッドID(数値・小数点以下0桁)
    Add-PnPFieldFromXml -List "BoardReplies" -FieldXml '
    <Field Type="Number"
           Name="ThreadId"
           StaticName="ThreadId"
           DisplayName="ThreadId"
           Decimals="0" />
    ' | Out-Null

    # 返信側のTitleは入力任意にする
    Set-PnPField -List "BoardReplies" `
        -Identity "Title" `
        -Values @{ Required = $false } | Out-Null

    Write-Host "2つのリストと列を作成しました。" -ForegroundColor Green

    # 列の確認
    foreach ($name in @("BoardThreads", "BoardReplies")) {
        Write-Host "`n[$name]" -ForegroundColor Cyan
        Get-PnPField -List $name |
            Where-Object {
                $_.InternalName -in @(
                    "Title", "Body", "Category", "ThreadId", "IsDeleted"
                )
            } |
            Select-Object InternalName, TypeAsString, Required, DefaultValue |
            Format-Table -AutoSize
    }
}

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

日記

前の記事

匿名掲示板 進捗メモNew!!
日記

次の記事

表示する列を設定New!!