cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
TechWriter89
Frequent Visitor

Add items to existing Sharepoint list

I have a Sharepoint list of document numbers and would like to extend it to add more items using the same format. So if I have number PIL-23-1582 as the last item in the current list, I would like the list to extend to add 200 new items, starting at PIL-23-1583 and counting up to PIL-23-1783.

 

 number-list.png

 

Currently I plan to add this as a step in a flow that refreshes the middle digits each year. If there's an operation to instead just extend a list when available items drop below 10 etc. in a separate framework, that would be fine too. I'm flexible on exact approach as long as the list doesn't run out of material. 

 

It seems like Create Items is the right operation, but I'm not sure of the best way to read the current list values and avoid duplicates. I'd appreciate any advice here! 

1 ACCEPTED SOLUTION

Accepted Solutions

@TechWriter89

creativeopinion_4-1694019776710.png

 

Trigger

Start with a Manual trigger. You can replace your trigger after you've built and tested your flow.

Get Current Year 

It's always good practice to use a Convert time zone action when working with Dates/Times.

creativeopinion_0-1694019421974.png

  • Base time: Insert a utcNow() expression.
  • Source Time Zone: Search for (UTC) Coordinated Universal Time and select it.
  • Destination Time Zone: Search for your local time zone and select that.
  • Format String: Round-trip (can be any one, Round-trip is just my default)

    Add a Compose action.

    Insert an expression. Use the formatDateTime() function.

    creativeopinion_1-1694019603680.png

    Switch back to the Dynamic content tab and insert the outputs from the Convert time zone action. 

    creativeopinion_2-1694019640026.png

    Add a comma and single quotes and yy for the last two digits of the current year. 

    creativeopinion_3-1694019682057.png

    Your expression should look something like this: 

    formatDateTime(body('Convert_time_zone'),'yy'

    Please Note: If you've renamed your timezone action, your expression will need to match the name of your Convert time zone action..

     

    Get List Items

    Next, you need to add a Get Items action to get your SP List. Important: You will need to sort your list by the PIL Number column—this way you can access the last item in the list. 

     

    In my demo, I'm using the Title column for that. You will need to adjust your ODATA orderBy query based on your column's internal name. If you aren't sure how to get your column's internal name, please refer to this section of a YT tutorial I uploaded.

    creativeopinion_5-1694021270656.png

     

    Add a Compose action to get the last PIL item. You'll need to use an expression.

    creativeopinion_6-1694021432345.png

    My expression looks like this, however you will need to replace the Title text between the single qu...

    last(body('Get_items')?['value'])?['Title']

     

    Run a test.

     

    Confirm that the Compose action has pulled the last item in your SharePoint list. 

    creativeopinion_7-1694021565839.png

     

    Create the Range of PIL Text

    The next section of your flow will involve a few Compose actions. 

    creativeopinion_8-1694021604143.png

    Add a Compose action to store the number of items you want to add to your SP List. In your original post you stated 200. While you are testing your flow, I would recommend a smaller number. 5-10 is good.


     Updating Media

     

    Compose the Starting Number

    Add a Compose action to hold your starting number. You will need an expression for this. I'll walk you through how to build out the expression. You need to use the following functions:

    • split() to split your PIL text by the dashes
    • last() to grab the last part of the split string (the digits)
    • int() to convert your string into an integer
    • add() to add 1 to your number (as your starting point for the next set of the numbers)

      Start with the split() function and insert the outputs from Compose action that is storing the last PIL number.

      creativeopinion_0-1694021872927.png

      Add a comma and single quotes. In between the single quotes insert a -.

      creativeopinion_1-1694021905632.png

       

      Wrap the entire expression in a last() function. To wrap the expression go the start of it (press the up arrow key on your keyboard) and type in last(. Then go to the end of the expression (press the down arrow key on your keyboard) and insert a closing bracket ).

       

      The last() function will take the last part of the PIL text (eg. 1583)

      creativeopinion_2-1694021960115.png

       

      Next, you need to convert the string of text into a number (integer). Wrap the entire expression in an int() function. Don't forget to add a closing bracket at the end of the expression.

      creativeopinion_3-1694022083556.png

       

      Lastly, wrap the entire expression in an add() function. You need to add 1 to your number so it starts at 1584. Just as above. Go to the start of the expression and insert add( 

      creativeopinion_4-1694022149626.png

      Go to the end of the expression, and insert a comma and a 1, then insert the closing bracket.

      creativeopinion_5-1694022212516.png

       

      The expression should look something like this: 

      add(int(last(split(outputs('Compose_-_Get_Last_PIL_Item'),'-'))),1)

      Please note: This part of the expression outputs('Compose_-_Get_Last_PIL_Item') may look different depending on how you've named your Compose action.

       

      Compose the Array of Numbers

      To get the range of numbers you'll need an expression and the range() function. The range function takes two parameters:

      range( [starting number], [count of numbers])

       

      Insert the range() function in the Expression tab. Click on the Dynamic content tab and insert the outputs from the Compose action that is storing your starting number.

      creativeopinion_6-1694022469556.png

      Add a comma than insert the outputs from the Compose action that is storing the number of items to add. 

      creativeopinion_7-1694022542504.png

      My expression looks like this::

      range(outputs('Compose_-_Starting_Number'),outputs('Compose_-_Items_to_Add'))

      Please note: Your expression may look a bit different based on how you've named your compose actions.

       

      Compose Count of Items

      This is optional. However, I like to use Compose actions to confirm the count of the numbers created. The range function will create an array of numbers you can loop through. Use a Compose action to store the length of items in the array. You'll need an expression and the length() function. 

       

      Insert outputs from the Compose action above into the length() function.

       

      creativeopinion_9-1694022733131.png

       

      Run a test.

       

      Confirm the output of the Starting number, it should be next in the list. My list ended at 1586, so 1587 is the next number.

      creativeopinion_8-1694022618602.png

       

      Confirm the output of the Compose action with the range numbers.

      creativeopinion_10-1694022781464.png

      If you added a Compose action to store the number of items, it should match the number of items to add Compose action.

      creativeopinion_11-1694022812670.png

       

      Apply to Each

      Add an Apply to Each action to loop through each item in the Compose action that is storing the range of numbers.

      creativeopinion_12-1694022865993.png

      Add a Compose action to build your number. 

      PIL-[insert outputs from year]-[Current Item]

      creativeopinion_13-1694022932134.png

      creativeopinion_14-1694022955570.png

      Add a Create Item action. Use the outputs from the Compose action above for the Title (or whichever column you are using for your text).

       

      Hope this helps!


      If I helped you solve your problem—please mark my post as a solution .
      Consider giving me a 👍 if you liked my response!

      👉 Watch my tutorials on YouTube
      👉 Tips and Tricks on
      TikTok

       

       

       

       

       

       

View solution in original post

4 REPLIES 4

@TechWriter89 How will you be triggering your flow? Would you like to run a check every day?

TechWriter89
Frequent Visitor

The current flow for these numbers runs on January 1st each year (to update the 22 to 23 to 24 for the current year). We only go through a few hundred numbers per year. I was thinking of adding this as a step to that flow so the logic is:

  • On January 1, get the list
  • Update the current numbers
  • Add new ones matching the pattern

Here's what I currently have. flow-sample.png

@TechWriter89

creativeopinion_4-1694019776710.png

 

Trigger

Start with a Manual trigger. You can replace your trigger after you've built and tested your flow.

Get Current Year 

It's always good practice to use a Convert time zone action when working with Dates/Times.

creativeopinion_0-1694019421974.png

  • Base time: Insert a utcNow() expression.
  • Source Time Zone: Search for (UTC) Coordinated Universal Time and select it.
  • Destination Time Zone: Search for your local time zone and select that.
  • Format String: Round-trip (can be any one, Round-trip is just my default)

    Add a Compose action.

    Insert an expression. Use the formatDateTime() function.

    creativeopinion_1-1694019603680.png

    Switch back to the Dynamic content tab and insert the outputs from the Convert time zone action. 

    creativeopinion_2-1694019640026.png

    Add a comma and single quotes and yy for the last two digits of the current year. 

    creativeopinion_3-1694019682057.png

    Your expression should look something like this: 

    formatDateTime(body('Convert_time_zone'),'yy'

    Please Note: If you've renamed your timezone action, your expression will need to match the name of your Convert time zone action..

     

    Get List Items

    Next, you need to add a Get Items action to get your SP List. Important: You will need to sort your list by the PIL Number column—this way you can access the last item in the list. 

     

    In my demo, I'm using the Title column for that. You will need to adjust your ODATA orderBy query based on your column's internal name. If you aren't sure how to get your column's internal name, please refer to this section of a YT tutorial I uploaded.

    creativeopinion_5-1694021270656.png

     

    Add a Compose action to get the last PIL item. You'll need to use an expression.

    creativeopinion_6-1694021432345.png

    My expression looks like this, however you will need to replace the Title text between the single qu...

    last(body('Get_items')?['value'])?['Title']

     

    Run a test.

     

    Confirm that the Compose action has pulled the last item in your SharePoint list. 

    creativeopinion_7-1694021565839.png

     

    Create the Range of PIL Text

    The next section of your flow will involve a few Compose actions. 

    creativeopinion_8-1694021604143.png

    Add a Compose action to store the number of items you want to add to your SP List. In your original post you stated 200. While you are testing your flow, I would recommend a smaller number. 5-10 is good.


     Updating Media

     

    Compose the Starting Number

    Add a Compose action to hold your starting number. You will need an expression for this. I'll walk you through how to build out the expression. You need to use the following functions:

    • split() to split your PIL text by the dashes
    • last() to grab the last part of the split string (the digits)
    • int() to convert your string into an integer
    • add() to add 1 to your number (as your starting point for the next set of the numbers)

      Start with the split() function and insert the outputs from Compose action that is storing the last PIL number.

      creativeopinion_0-1694021872927.png

      Add a comma and single quotes. In between the single quotes insert a -.

      creativeopinion_1-1694021905632.png

       

      Wrap the entire expression in a last() function. To wrap the expression go the start of it (press the up arrow key on your keyboard) and type in last(. Then go to the end of the expression (press the down arrow key on your keyboard) and insert a closing bracket ).

       

      The last() function will take the last part of the PIL text (eg. 1583)

      creativeopinion_2-1694021960115.png

       

      Next, you need to convert the string of text into a number (integer). Wrap the entire expression in an int() function. Don't forget to add a closing bracket at the end of the expression.

      creativeopinion_3-1694022083556.png

       

      Lastly, wrap the entire expression in an add() function. You need to add 1 to your number so it starts at 1584. Just as above. Go to the start of the expression and insert add( 

      creativeopinion_4-1694022149626.png

      Go to the end of the expression, and insert a comma and a 1, then insert the closing bracket.

      creativeopinion_5-1694022212516.png

       

      The expression should look something like this: 

      add(int(last(split(outputs('Compose_-_Get_Last_PIL_Item'),'-'))),1)

      Please note: This part of the expression outputs('Compose_-_Get_Last_PIL_Item') may look different depending on how you've named your Compose action.

       

      Compose the Array of Numbers

      To get the range of numbers you'll need an expression and the range() function. The range function takes two parameters:

      range( [starting number], [count of numbers])

       

      Insert the range() function in the Expression tab. Click on the Dynamic content tab and insert the outputs from the Compose action that is storing your starting number.

      creativeopinion_6-1694022469556.png

      Add a comma than insert the outputs from the Compose action that is storing the number of items to add. 

      creativeopinion_7-1694022542504.png

      My expression looks like this::

      range(outputs('Compose_-_Starting_Number'),outputs('Compose_-_Items_to_Add'))

      Please note: Your expression may look a bit different based on how you've named your compose actions.

       

      Compose Count of Items

      This is optional. However, I like to use Compose actions to confirm the count of the numbers created. The range function will create an array of numbers you can loop through. Use a Compose action to store the length of items in the array. You'll need an expression and the length() function. 

       

      Insert outputs from the Compose action above into the length() function.

       

      creativeopinion_9-1694022733131.png

       

      Run a test.

       

      Confirm the output of the Starting number, it should be next in the list. My list ended at 1586, so 1587 is the next number.

      creativeopinion_8-1694022618602.png

       

      Confirm the output of the Compose action with the range numbers.

      creativeopinion_10-1694022781464.png

      If you added a Compose action to store the number of items, it should match the number of items to add Compose action.

      creativeopinion_11-1694022812670.png

       

      Apply to Each

      Add an Apply to Each action to loop through each item in the Compose action that is storing the range of numbers.

      creativeopinion_12-1694022865993.png

      Add a Compose action to build your number. 

      PIL-[insert outputs from year]-[Current Item]

      creativeopinion_13-1694022932134.png

      creativeopinion_14-1694022955570.png

      Add a Create Item action. Use the outputs from the Compose action above for the Title (or whichever column you are using for your text).

       

      Hope this helps!


      If I helped you solve your problem—please mark my post as a solution .
      Consider giving me a 👍 if you liked my response!

      👉 Watch my tutorials on YouTube
      👉 Tips and Tricks on
      TikTok

       

       

       

       

       

       

Thank you very much! I'm only partway through testing, but it's great up through the Compose action. This is so educational to work through-- what a great level of detail. 

 

I will come back and accept this as the solution in a few days once I'm done with the rest.

compose-success.png

 

My expressions adapted to some local names in case that helps anyone else in the future: 

 

In the Get Items steps, a filter query to grab PIL numbers that aren't already reserved by linked ADS items:

startswith(Title, 'PIL') and User_x0020_Story_x0020_Ticket_x0 eq '0'

 

Retrieving most recent PIL number from renamed steps: 

last(body('Get_PIL_Numbers_list')?['value'])?['Title']

 

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!    This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Community MembersNumber SolutionsSuper UsersNumber Solutions Deenuji 9 @NathanAlvares24  17 @Anil_g  7 @ManishSolanki  13 @eetuRobo  5 @David_MA  10 @VishnuReddy1997  5 @SpongYe  9JhonatanOB19932 (tie) @Nived_Nambiar  8 @maltie  2 (tie)   @PA-Noob  2 (tie)   @LukeMcG  2 (tie)   @tgut03  2 (tie)       Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 2: Community MembersSolutionsSuper UsersSolutionsPower Automate  @Deenuji  12@ManishSolanki 19 @Anil_g  10 @NathanAlvares24  17 @VishnuReddy1997  6 @Expiscornovus  10 @Tjan  5 @Nived_Nambiar  10 @eetuRobo  3 @SudeepGhatakNZ 8     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 3:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji32ManishSolanki55VishnuReddy199724NathanAlvares2444Anil_g22SudeepGhatakNZ40eetuRobo18Nived_Nambiar28Tjan8David_MA22   Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 4:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji11FLMike31Sayan11ManishSolanki16VishnuReddy199710creativeopinion14Akshansh-Sharma3SudeepGhatakNZ7claudiovc2CFernandes5 misc2Nived_Nambiar5 Usernametwice232rzaneti5 eetuRobo2   Anil_g2   SharonS2  

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages

Users online (1,465)