cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Anonymous
Not applicable

Sort excel table using power automate

Hi,

 

I am new to Power Automate.Can anybody tell me how to sort an excel table in a flow?

 

Thanks,

Asiri

17 REPLIES 17
chsanche
Community Support
Community Support

Hi @Anonymous 

 

Unfortunately, there is no sorting functionality in MS Flow. There are several forums for this asking as well: https://powerusers.microsoft.com/t5/General-Power-Automate/Flow-Options-for-sorting-data/td-p/157360

 

Best Regards,

--

If this reply has answered your question or solved your issue, please mark this question as answered. Answered questions help users in the future who may have the same issue or question quickly find a resolution via search. If you liked my response, please consider giving it a thumbs up. THANKS!

If this post helps you give a :thumbs_up: and if it solved your issue consider Accept it as the solution
Anonymous
Not applicable

I had a similar need.  I ended up creating an automation script in excel online for the worksheet and then in Flow use the 'Run Script' task.

dheckler_0-1626450336905.png

 

would you mind sharing the script?

Sure - here you go. In the code sample below, I was sorting by two different columns, date (key:3) and time (key:4). The script was actually created using the 'Record Actions' functionality in excel online. I can't take credit for writing it.

 

function main(workbook: ExcelScript.Workbook) {
	let timeLog = workbook.getTable("timeLog");
	// Custom sort on table timeLog
	timeLog.getSort().apply([{key: 3, ascending: false}, {key: 4, ascending: false}], false);
}

 

Once I created the sort script and tested it, I created the flow using the Run Script action for excel.

 

i need to do sort a to z for one column only, how can i adjust the script correctly can you maybe help?

Anonymous
Not applicable

Just looking at the code.

 

timeLog.getSort().apply([{key: 3, ascending: false}, {key: 4, ascending: false}], false);
timeLog.getSort().apply([{key: 3, ascending: false}], false);

hi @Anonymous how did you figure this out? I am also trying to apply your solution to mine, to sort alphabetically but the script gave errors when I ran it. Did you follow some guide on how to build it? I'd love to understand.

Great solution!  I used the script method, and the only difference is that I used the "Run Script from Sharepoint Library" step to pinpoint the Excel file to run the script on:

GDBarkin_0-1699491895190.png

 

maheshBI
Frequent Visitor

Hi!!, Hope you've solved this problem, if not, let me show a use case that worked for me, assuming that you need to create a table from a range that must be sorted.

1. Open Excel, 
2. Check if the Ribbon has the Automate Menu, if not, you have to enable this from File, options, Custumize Ribbon, and add the Automate Tab to the right side, click on OK.
3. Select Automate Tab and Click New Script
4. On the Right side of excel wil will have this Window

maheshBI_1-1699636339984.png

Erase the existing code and paste this one.

function main(workbook: ExcelScript.Workbook) {
//worksheets from the Workbook
const worksheets = workbook.getWorksheets();

// Scans each worksheet
for (let i = 0; i < worksheets.length; i++) {
const worksheet = worksheets[i];

// Active range
let range = worksheet.getUsedRange();

//Last column and row
let lastRow = range.getRowCount();
let lastColumn = range.getColumnCount();

// Table Range
let tableRange = worksheet.getRangeByIndexes(0, 0, lastRow, lastColumn);

// Create Table from sel range
let table = worksheet.addTable(tableRange, true);
//Sort Table by the first Key ascending
let tableSort= table.getSort().apply([{ key: 0, ascending: true }]);

}

// Completed Response
return "You Have Created and Sorted your Table";
}

5. From the save window Save this script
6. Go to your flow and Add this Action:

maheshBI_2-1699636753526.png

Please fill all the parameterm and from the Script Box, locate the script (*.osts file usually stored in the OfficeScripts Folder in your onedrive for business.

7. Run and Enjoy!!!

let me know how this works for you




 

 





Hi!!, Hope you've solved this problem, if not, let me show a use case that worked for me, assuming that you need to create a table from a range that must be sorted.

1. Open Excel, 
2. Check if the Ribbon has the Automate Menu, if not, you have to enable this from File, options, Custumize Ribbon, and add the Automate Tab to the right side, click on OK.
3. Select Automate Tab and Click New Script
4. On the Right side of excel wil will have this Window

McPowerPlatform_0-1699637232777.png

 

Erase the existing code and paste this one.

function main(workbook: ExcelScript.Workbook) {
//worksheets from the Workbook
const worksheets = workbook.getWorksheets();

// Scans each worksheet
for (let i = 0; i < worksheets.length; i++) {
const worksheet = worksheets[i];

// Active range
let range = worksheet.getUsedRange();

//Last column and row
let lastRow = range.getRowCount();
let lastColumn = range.getColumnCount();

// Table Range
let tableRange = worksheet.getRangeByIndexes(0, 0, lastRow, lastColumn);

// Create Table from sel range
let table = worksheet.addTable(tableRange, true);
//Sort Table by the first Key ascending
let tableSort= table.getSort().apply([{ key: 0, ascending: true }]);

}

// Completed Response
return "You Have Created and Sorted your Table";
}

5. From the save window Save this script
6. Go to your flow and Add this Action:

McPowerPlatform_1-1699637232908.png

 

Please fill all the parameterm and from the Script Box, locate the script (*.osts file usually stored in the OfficeScripts Folder in your onedrive for business.

7. Run and Enjoy!!!

let me know how this works for you




 

 

Hi @McPowerPlatform ,

Thank you for your detailed steps.

In my scenario, I am trying to sort an existing table in an Excel, and I encountered the following error during script execution:

We were unable to run the script. Please try again.
Office JS error: Line 22: {"message":"A table can't overlap another table. ","code":"InvalidArgument","type":"Worksheet","method":"addTable","line":20}
clientRequestId: d708b05b-c4bc-4d8d-89f6-569f96531ef4

SysAdmSG_2-1716459114749.png

 

Below is the table of an existing Excel which I want to sort by column H in ascending order:

SysAdmSG_0-1716458961995.png


Below is my script, referencing to your steps:

function main(workbook: ExcelScript.Workbook) {
    //worksheets from the Workbook
    const worksheets = workbook.getWorksheets();

    // Scans each worksheet
    for (let i = 0; i < worksheets.length; i++) {
        const worksheet = worksheets[i];

        // Active range
        let range = worksheet.getUsedRange();

        //Last column and row
        let lastRow = range.getRowCount();
        let lastColumn = range.getColumnCount();

        // Table Range
        let tableRange = worksheet.getRangeByIndexes(0, 0, lastRow, lastColumn);

        // Create Table from sel range
        let table = worksheet.addTable(tableRange, true);
        //Sort Table by the first Key ascending
        let tableSort = table.getSort().apply([{ key: 7, ascending: true }]);
    }

    // Completed Response
    return "You Have Created and Sorted your Table";
}

 
May I know if you will be able to advise on the solution?

Thank you.

Hi, The main reason for the error you are getting is probably because you already had created the table in the workbook, please check that, if everything is ok, try this script and please let me know if this works for you:

function main(workbook: ExcelScript.Workbook) {
    //worksheets from the Workbook
    const worksheets = workbook.getWorksheets();

 

    // Scans  each worksheet
    for (let i = 0; i < worksheets.length; i++) {
        const worksheet = worksheets[i];

 

        // Active range
        let range = worksheet.getUsedRange();

 

        //Last column and row
        let lastRow = range.getRowCount();
        let lastColumn = range.getColumnCount();

 

        // Table Range
        let tableRange = worksheet.getRangeByIndexes(00, lastRow, lastColumn);

 

        // Create Table from sel range
        let table = worksheet.addTable(tableRange, true);
        
  //Add a name for the table , in this case PowerPlatform
      let tables = workbook.getTables();
      tables.forEach(table => {
        table.setName("PowerPlatform");
      }); 
        //Sort Table by the first Key ascending or first column of the table
        let tableSort = table.getSort().apply([{ key: 0, ascending: true }]);



    }

 

    // Completed Response
    return "You Have Created and Sorted your Table";
}

//End of the script

Hi @McPowerPlatform ,

Thank you for your reply.

The current flow is that, I create the Excel file, follow by Creating the Table with headers, and then populate each row data.

SysAdmSG_1-1716488108236.png

 

Therefore, if I were to remove my current 'Create table' step, and replace the action of table creation using the script, may I know how I can modify the script to include Headers?


Thank you.

Ok, Now I see the real picture, seems that you are missing a step, let's try to solve this with another perspective, just a quick question I realize that you create an excel file in sharepoint as your first step, and I see that you are adding content, what is that content (Outputs)??, are you tring to create a Blank excel file and then populate it with a Dataverse Table??, can you be more specific in that step??

Hi @McPowerPlatform ,

Yes, you are right. The 'outputs' comes from a 'Sample File Content' of a blank Excel file.

You are also correct on the sequence, as follow:

1. A Blank Excel is created

SysAdmSG_1-1716513773971.png

SysAdmSG_0-1716513752757.png

2. A Table is created in the Excel

SysAdmSG_2-1716513967821.png


3. For each dataverse row fetched, create a new row in the Excel Table

SysAdmSG_3-1716514018470.png


4. And lastly, I execute the sorting script to the Excel

SysAdmSG_4-1716514060926.png

 

OK, I made it, works just fine.
1. First in any Sharepoint Document Library or Folder you need to store a blank Excel file with the required Structure, this can be used as a Template. Name it as TemplateTraveller.xlsx.
McPowerPlatform_0-1716587088773.png
2. Using Excel, select New Script from the Automate Menu, 

McPowerPlatform_3-1716588129600.png

3. Using the Code Editor, paste the following code, and the Save the Script in and folder of your SharePoint document library, this script will create a table for the new created excel file.

McPowerPlatform_4-1716588255465.png

function main(workbook: ExcelScript.Workbook) {
//worksheets from the Workbook
const worksheets = workbook.getWorksheets();

// Scans each worksheet
for (let i = 0; i < worksheets.length; i++) {
const worksheet = worksheets[i];

// Active range
let range = worksheet.getUsedRange();

//Last column and row
let lastRow = range.getRowCount();
let lastColumn = range.getColumnCount();

// Table Range
let tableRange = worksheet.getRangeByIndexes(0, 0, lastRow, lastColumn);

// Create Table from sel range
let table = worksheet.addTable(tableRange, true);

//Add a name for the table , in this case PowerPlatform , you can change it
let tables = workbook.getTables();
tables.forEach(table => {
table.setName("PowerPlatform");
});

 

}

// Completed Response
return "You Have Created and Sorted your Table";
}

//End of the script

4. Once you have saved the script, repeat steps 2 and 3 and create the following script that will sort the table for you. PowerPlatform is the name of the table., key:0 is the first column of your table, you can change it.
 

function main(workbook: ExcelScript.Workbook) {
let myTable = workbook.getTable("PowerPlatform");
myTable.getSort().apply([{ key: 0, ascending: true }]);

}

 

5. Create the Flow with the following specifications:

McPowerPlatform_0-1716590802740.png

McPowerPlatform_1-1716590823036.png

Let me know how this works for you

 



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,208)