DEV Community

Cover image for Deploying Scripts in Power Automate

Deploying Scripts in Power Automate

david wyatt on February 08, 2023

Office Scripts are incredibly useful, often stretching beyond use cases of just Excel (if you want to know more check out 5 Scripts every power aut...
Collapse
 
bobr_da3505806f profile image
Bostjan Brumec

Hi, maybe a bit late to the post, but I think this solution is exactly what I need.

I am using Run script from SharePoint library connector and all input fields are variables, including the script ID. The script has a parameter as an input. I tried with the above suggestion where I included the following text into the ScriptParameter:

{
jsonString:"@body('filtered_list')"
}

It however generates the following inputs for the connector:

"ScriptParameters": {
        "jsonString": [
            {
                "Entity ID": "1",
                "Entity Name": "1",
                "Year": "1",
                "Jurisdiction": "1",
                "Currency": "1"
            },
            {
                "Entity ID": "2",
                "Entity Name": "2",
                "Year": "2",
                "Jurisdiction": "2",
                "Currency": "2"
                }
        ]
    }
Enter fullscreen mode Exit fullscreen mode

instead of this one:

"ScriptParameters/jsonString": [
        {
            "Entity ID": "1",
            "Entity Name": "1",
            "Year": "1",
            "Jurisdiction": "1",
            "Currency": "1"
        },
        {
            "Entity ID": "2",
            "Entity Name": "2",
            "Year": "2",
            "Jurisdiction": "2",
            "Currency": "2"
        }
    ]
Enter fullscreen mode Exit fullscreen mode

Any idea what I am doing wrong?

Collapse
 
wyattdave profile image
david wyatt

Hi @bobr_da3505806f from my understanding they are both the same. In power automote the below are same:
Outputs ()?['body']['value']
Outputs ()?['body/value"]
So the more important question is does it still work or what the error is?

Collapse
 
bobr_da3505806f profile image
Bostjan Brumec

@body('filtered_list') needed to be translated to string first. Then it worked. Thanks for the example

Collapse
 
misterjib profile image
misterjib

This is cool, bummer PA doesn't support running scripts from SP yet.

Collapse
 
wyattdave profile image
david wyatt

Looks like it finally does 😁😁
Image description

Collapse
 
misterjib profile image
misterjib

Oh wow, this is great news

Collapse
 
hjl2004 profile image
hjl2004

Hi. I have yet another case. I got a tiny script temporary pausing the sheet protection in order for me to perform changes, before resuming it. There are no parameters, but puting "" into the ScriptParameter section seems to run into issues. I would be thankful to hear any suggestion on why this is and how to make it work.

Collapse
 
wyattdave profile image
david wyatt

Hi hjl2004, have you tried adding a parameter but not using it?

Collapse
 
hjl2004 profile image
hjl2004

There are no parameters. The script is switching the sheet protection on/off. There is no interface part.

Thread Thread
 
wyattdave profile image
david wyatt

But you can still pass a parameter, just dont use it

Collapse
 
hjl2004 profile image
hjl2004

It doesn't work for me. I get the error "Script identifier format was invalid.
clientRequestId: ". When looking into input under action 'run script' I don't see "ScriptParameters": {"data": "@body('Select')"} as you described but "ScriptParameters": {"data": "ms-officescript%3A%2F%2Fonedrive_business_itemlink%2Fosts"} instead. What's the issue here? Can you help?

Collapse
 
wyattdave profile image
david wyatt

Hi hjl2004, If you are not seeing @body('Select') then it appears you have the wrong input, the above is the route url of the scriptId. That should go in the script input (with the uique ID appended).
Recently I have seen that sometimes the schema is now identified (making it a lot easier as we now see the parameter inputs instead of just the parent ScriptParameter input), but that might add some confusion if you are looking for ScriptParameter. If Ive missed the problem let me know and we can pick up directly (others have contacted me through LinkedIn )

Collapse
 
hjl2004 profile image
hjl2004 • Edited

Yes, I actually did put the URL+uniqueID in the 'script input' as described by you. The problem seems to be, that my output of 'body/Id' is "%252fShared%2bDocuments%252fCode%252fScripts%252fTBL2JSON_Input_from_JR.osts". As there is no unique ID your split does take the file extension "osts" instead.

You are using OneDrive, but is there a way to use scripts located at a sharepoint? Is there anything like 'ms-officescript%3A%2F%2Fsharepoint_itemlink%2F'?

Thread Thread
 
wyattdave profile image
david wyatt • Edited

I see, the ScriptParameter should be a object (above its a select action). Example
ScriptParameter:
{
"parameterName": "ParameterValue"
}


would pass the word "ParameterValue" as the parameterName


Script:
Function main(workbook: ExcelScript.Workbook, parameterName :string) {

Collapse
 
gautam_chawla_6c6e16c9a44 profile image
Gautam Chawla

I am using 'Run script from sharepoint library' and facing issue in making this pattern to choose the right script dynamically, any help around this?
Drive Id - b!s9cbCzQ2902ADQHt5GLPH8s9xUuMNF9OvnC7S0asF5tu6c5CSpfoRLt47xoNTCq1 (sharepoint library)
Script Id - 01KVPU3K75YAKLYQLVUNG2KTZHYVJITQ43

Collapse
 
wyattdave profile image
david wyatt

The easiest way I find to do it is to select everything you want in the action, then peak the code. This will show all of the inputs you need. Copy them into an environment variable (I recommend just one object environment variable), then replace the values with the environment variable you are using

Collapse
 
neutralalien profile image
NeutralAlien

Hi, David.
This works great in Power Automate online, but for stupid reason doesn’t seem to work in Power Automate desktop. Any ideas on how to potentially get it to work in the desktop version ?