Forum Discussion

Blair24's avatar
Blair24
Copper Contributor
Nov 29, 2018
Solved

PnP Site Creation - Site Choice Column Values switch

Hi Folks,

I have a PnP Template which has a site choice column called "Options" that's applied to 5 document libraries in the template. When the site creation script is running an array of choices will be passed in. I'm wondering if its possible to do a switch when there is only one choice value it will add that choice and make that one choice the default value of the column, but when there's more than one choice it will add the choices and leave the default value as blank?

 

Thanks!

  • Hi Blair24 sorry for the delay getting back to you. You could try something similar to this:

     

    $siteurl = ""
    Connect-PnPOnline -Url $siteurl -UseWebLogin
    $context = Get-PnPContext

    # Remove one of the following dependent on what you want to test
    # Single Choice field which I tested with the choice "Choice 1"
    #$choicefield = Get-PnPField -Identity "OneChoice"
    #$choicecount = $choicefield.Choices.Count

    # Multiple Choice field which I tested with the choices "Choice 1, Choice 2, Choice 3"
    $choicefield = Get-PnPField -Identity "MultipleChoice"
    $choicecount = $choicefield.Choices.Count

    # Switch logic based on the number of choices assigned to the field
    # If it has more than 1, then set the Default to "blank"
    switch($choicecount)
    {
    1 { $choicefield.DefaultValue = $choicefield.Choices[0] }
    default { $choicefield.DefaultValue = $null }
    }

    # Update the field and propogate changes to anything using the column
    $choicefield.UpdateAndPushChanges($true)
    $context.ExecuteQuery()
     
    Whilst it may not be 100% what you need, hopefully the example will help you to build that into your solution.
  • Matt Weston's avatar
    Matt Weston
    Iron Contributor

    Hi Blair24 I don't think that's possible within the PnP Template itself, but there's no reason that you couldn't write a few lines of script to run after the ApplyPnPTemplate call to perform that logic. If you need help with that, please let me know.

    • Blair24's avatar
      Blair24
      Copper Contributor
      Hey Matt,

      Yeah was wondering what the best script would be to use after the pnp template has ran. The options would basically come in two variables. The first would be one choice and the second variable could contain multiple choices. So just wondering how I could say if the second variable is blank set the first to the default value?
      • Matt Weston's avatar
        Matt Weston
        Iron Contributor

        Where is it you're going to be storing the potential values for the choice fields? Do you have multiple templates, one with a single choice, and one with multiple? 

         

        Or are you planning on storing the values somewhere else?

Resources