4 ways to level up your Power Automate flows

Published Sep 18 2021 08:40 AM 2,385 Views

Intro

A while back, I wrote about How to use a custom connector in Power Automate showing how easy you can create a connector to a cloud service that is not already in the very long list of connectors in Power Automate. I chose to create a connector for Spotify and connected a Get_Current_Song action with an IOT button and twitter. As a result, information about the song I would be listening to would be tweeted.

Now I stumbled upon a really great blog post by fellow MVP Loryan Strant who also used this Spotify connector to change the pinned message of your status in Microsoft Teams. To get the most value out of this post, go read Loryans post first- it is written with great clarity and also I love this guys' taste of music :musical_notes:! Also please understand his flow first. I love the idea and creativity! The result of such a flow looks like this:

 

Teams-status.png

 

While some would debate if this flow is necessary, I feel it shows that custom connectors are a great way to extend Microsoft 365. Also: #MusicWasMyFirstLove - case closed :)

However when reading this blog post, I saw some patterns that I often see in flows and that could be improved - and as I could already learn so much from Loryan, this time I hope to return the favor :)

 

Loryan created 13 actions and as I seem to be just more lazy than he is, therefore I thinned out his awesome idea to just 5-6 actions: This is what it looks like:

 

flow-overview.png

 

The result is about the same - just that I display also a message if I am currently not listening to music (yes, this happens!)

Parse JSON

First thing I wanted get rid of was the Parse JSON action. While it is super powerful and lets you easily access properties of objects that you get as response, it is unnecessary sometimes: We can also write the flow without it if we take a look on how we can select properties and return their values in expressions.

To be successful with that, it is crucial to understand the JSON schema of the response we are interested in. Easiest way to achieve that:

a) copy the body of the output of that action, paste it into a code editor - I work with Visual Studio Code

 

flow-output.png

 

b) we make sure that we select JSON as language - VS Code will then color everything nicely for us and highlight beginning and ends of objects for example

c) we have a look at the code. For the sake of better readability - this schema is about 450 lines long, I already collapsed two arrays called available markets - it’s a long list of country codes in which a particular song is available. We don’t need it here. If you aim to rebuild this, its highly recommended to copy the code from YOUR output, not from this blog post, as I shortened the code.

 

    {
        "timestamp": 1631969547352,
        "progress_ms": 85903,
        "item": {
          "album": {
            "album_type": "album",
            "artists": [
              {
                "external_urls": {
                  "spotify": "https://open.spotify.com/artist/3CQIn7N5CuRDP8wEI7FiDA"
                },
                "href": "https://api.spotify.com/v1/artists/3CQIn7N5CuRDP8wEI7FiDA",
                "id": "3CQIn7N5CuRDP8wEI7FiDA",
                "name": "Run–D.M.C.",
                "type": "artist",
                "uri": "spotify:artist:3CQIn7N5CuRDP8wEI7FiDA"
              }
            ],
            "available_markets": [

            ],
            "external_urls": {
              "spotify": "https://open.spotify.com/album/7AFsTiojVaB2I58oZ1tMRg"
            },
            "href": "https://api.spotify.com/v1/albums/7AFsTiojVaB2I58oZ1tMRg",
            "id": "7AFsTiojVaB2I58oZ1tMRg",
            "images": [
              {
                "height": 640,
                "url": "https://i.scdn.co/image/ab67616d0000b273894ae4df775c6b47438991af",
                "width": 640
              },
              {
                "height": 300,
                "url": "https://i.scdn.co/image/ab67616d00001e02894ae4df775c6b47438991af",
                "width": 300
              },
              {
                "height": 64,
                "url": "https://i.scdn.co/image/ab67616d00004851894ae4df775c6b47438991af",
                "width": 64
              }
            ],
            "name": "Raising Hell",
            "release_date": "1986-05-15",
            "release_date_precision": "day",
            "total_tracks": 12,
            "type": "album",
            "uri": "spotify:album:7AFsTiojVaB2I58oZ1tMRg"
          },
          "artists": [
            {
              "external_urls": {
                "spotify": "https://open.spotify.com/artist/3CQIn7N5CuRDP8wEI7FiDA"
              },
              "href": "https://api.spotify.com/v1/artists/3CQIn7N5CuRDP8wEI7FiDA",
              "id": "3CQIn7N5CuRDP8wEI7FiDA",
              "name": "Run–D.M.C.",
              "type": "artist",
              "uri": "spotify:artist:3CQIn7N5CuRDP8wEI7FiDA"
            },
            {
              "external_urls": {
                "spotify": "https://open.spotify.com/artist/7Ey4PD4MYsKc5I2dolUwbH"
              },
              "href": "https://api.spotify.com/v1/artists/7Ey4PD4MYsKc5I2dolUwbH",
              "id": "7Ey4PD4MYsKc5I2dolUwbH",
              "name": "Aerosmith",
              "type": "artist",
              "uri": "spotify:artist:7Ey4PD4MYsKc5I2dolUwbH"
            }
          ],
          "available_markets": [

          ],
          "disc_number": 1,
          "duration_ms": 310386,
          "explicit": false,
          "external_ids": {
            "isrc": "USAR19900334"
          },
          "external_urls": {
            "spotify": "https://open.spotify.com/track/6qUEOWqOzu1rLPUPQ1ECpx"
          },
          "href": "https://api.spotify.com/v1/tracks/6qUEOWqOzu1rLPUPQ1ECpx",
          "id": "6qUEOWqOzu1rLPUPQ1ECpx",
          "is_local": false,
          "name": "Walk This Way (feat. Aerosmith)",
          "popularity": 69,
          "preview_url": "https://p.scdn.co/mp3-preview/c7a8010bbddcd0d793a832de76a24d2cae5ab497?cid=2e75e650d1e74b6a994734ed4aea2ef7",
          "track_number": 4,
          "type": "track",
          "uri": "spotify:track:6qUEOWqOzu1rLPUPQ1ECpx"
        },
        "currently_playing_type": "track",
        "actions": {
          "disallows": {
            "resuming": true,
            "toggling_repeat_context": true,
            "toggling_repeat_track": true,
            "toggling_shuffle": true
          }
        },
        "is_playing": true
      }
 

d) look for the properties you are interested in - for example we want to if a song is playing right now - we will find the is_playing property, which will either return true or false, which makes it perfect to put this into our condition:

 

flow-condition.png

 

The expression is outputs('Get_Current_Song')['body']['is_playing'].

Why is that? Let’s deconstruct this: From the output of the Get_Current_Song, we are interested in the ['body'] and inside of this we want the value of the ['is_playing'] property

Now if we are also interested in the name of the song, we would do a quick search in that file for name and get four results:

  1. in line 14: this name property sits in the artists array, that consists of an album object and the name property here refers to the name of the artist of album, not to the name of the song that we are interested in.
  2. in line 221: this name property also sits in the album object and refers to the name of the album.
  3. line 235: this name property sits in the artists object and refers again to the name of the artist.
  4. finally, in line 432, we find the name property we were looking for; it sits in the item property.

Therefore, we will access the song name with:

outputs('Get_Current_Song')['body']?['item']?['name]

If we now also want to have the name of the artist, we get this with:

outputs('Get_Current_Song')['body']?['item']?['album]?['artists][0]?['name']

Wait, what? These are a lot of properties, so let’s slow down for a bit to take a closer look:

  1. we get the Get_Current_Song action with outputs('Get_Current_Song')
  2. now we go ahead and with the ? operator and select the first level property we are interested in: item
  3. next up is taking a look inside of the item property: what do we want to get here? It’s the album property. We do this as before with ? and the name of the property in []: ?['album']
  4. Inside of the album property we want to get the artists property and yet again we do this with ? and the name of the property in []: ?['artists']
  5. Now remember that artists was an array? You can see this by the brackets [] in the code. We want to return the first element of this array, therefore we put a [0]. It’s a zero, because arrays in JSON are zero-based, which means that the first element of an array has the index 0, the second one has index 1, and so on.
  6. Now that we returned that first element in the artists array (it’s only one, but Power Automate will yell at you if you don’t select just one element and instead return the entire array), we will go ahead and finally select the name property from it, which refers to the artist.

You see, it’s all about understanding the underlying JSON schema and see, which properties are part of which objects. If you use the Parse JSON action, you don’t need to write these expressions, but you face some disadvantages:

  1. you can now select from four name properties in your dynamic content - and need to select blindly
  2. You have no clue WHY you get four of those as you don’t understand the data structure
  3. Parse JSON is yet another action which blows up your flow

unnecessary Apply-to-each loops

You know that moment when you are creating a flow and and out of a sudden Power Automates automatically adds an Apply-to-each for you and you wonder why this happened? Also, you will face some issues later on? Wherever possible it’s a good idea to avoid loops that are not necessary.

The fact that we didn’t just parse the JSON output from our Get_Current_Song action but understood the JSON schema gives us an option to avoid a loop - we did not return an array of (one) artist, that triggered Power Automate to insert an apply-to-each loop, but we only returned the first element of the artist array - this way we don’t need to loop over this one-element-array, which means that we got rid of another action!

variables and expressions

Power Automate knows some nice actions for variables - the most important one is initialize variable - in Power Automate all variables need to be initialized (with or without value) before we can use them.

Now as we already skipped successfully the Parse JSON action and could also access artist name and song name without the use of variables but in expressions, I want to minimize the other initialize variables and compose actions from Loryans flow:

Instead of several actions and calculations to

– get the timestamp when the song started – get the current time – add the duration of the currently playing song to the current time,

we could have one variable called duration with this expression:

 

addSeconds(utcnow(),div(sub(outputs('Get_Current_Song')?['body']?['item']?['duration_ms'],outputs('Get_Current_Song')?['body']?['progress_ms']),1000))

Explanation:

  1. This adds seconds to utcnow(), which is the current time.
  2. How many seconds? The return value from the subtraction of the duration in milliseconds ['duration_ms'] minus the ['progress_ms'] current progress in milliseconds
  3. With the div function this value is divided by 1000 as we want seconds instead of milliseconds.

understand the API you are working with

The Get_Current_Song returns the LAST song that was played - and the is_playing property returns if the song is currently (still) playing or not. This means, that we need to distinguish between a song that played before I needed to turn off the music and a currently playing song. You might say, well, this doesn’t really matter - but if we take a closer look to understand, which data is returned when, we would need to redesign our flow: The fact that we get an output of the Get_Current_Song even if the is_playing property is false, means that we don’t get a null when our subsequent actions expect an object, a string, an array or anything else that is NOT null. Yet again, understanding what happens behind the scenes because we understand the output of an action will make it easier to create flows.

9 Comments
New Contributor

this is cool :). BTW, isn't like 'b)' twice ;)

good catch @AdamWoj - thanks for thoroughly reading this! Did you already play with custom connectors? 

Senior Member

Hi @Luise Freese, I love that you have simplified Loryan's example of adding your current playing song to your Teams status message.  I have another couple of simplification suggestions that I would like to share.  I believe you can build the above with 2 actions.  The custom connector that you have built and the update status message API call.  

 

Using the following expression:

 

if(outputs('Get_Current_Song')['body']['is_playing']),concat(':musical_notes::guitar: to ',outputs('Get_Current_Song')['body/item/name'],' by ',first(outputs('Get_Current_Song')['body/item/album/artists'])?['name'],':face_screaming_in_fear: hell is freezing, im not listening to music')

 

....you can make the message of the body dynamic.  If 'is_playing' is true, present your first message with a concat of the emoji strings and values, else present hell is freezing over etc. 

 

You can also add your expression addSeconds(utcnow(),div(sub(outputs('Get_Current_Song')?['body']?['item']?['duration_ms'],outputs('Get_Current_Song')?['body']?['progress_ms']),1000)) straight into the message too and negate the need for the variable.

 

Below shows the action without the need of a condition or variable.

 

DamoBird365_0-1632134323314.png

 

I love simplification and efficiency, and it is always really interesting to see different methods of the same thing (like the construction of array paths)

outputs('Get_Current_Song')['body/item/album/artists']) vs outputs('Get_Current_Song').body.item.album.artists and why we include a ? to return a null if no value is found.

 

omg this is so cool, love this so much! And yes, different approaches FTW! Will give it a try :) @DamoBird365 

@DamoBird365 - I don't get the emojis to render correctly with your approach

 

LuiseFreese_0-1632143395436.png

 

also, you lost a closing parenthesis after `?['name']` to exit the concat function :) 

 

 

 

Senior Member

I don't think the emoji copy/paste thing works - agreed.  Do you use  " Windows Key + . " to get these?  Are you able to paste the below JSON into your flow - using new step -> my clipboard?  Good spot on the closing ), don't know where it wandered off to?!  :rolling_on_the_floor_laughing:

 

{"id":"df0e4d26-44fb-444b-834d-60ef-e65bbf57","brandColor":"#036C70","connectionReferences":{"shared_sharepointonline":{"connection":{"id":"/providers/Microsoft.PowerApps/apis/shared_sharepointonline/connections/64fe180a9817427a81aa7d96a25630de"}}},"connectorDisplayName":"SharePoint","icon":"https://connectoricons-prod.azureedge.net/releases/v1.0.1487/1.0.1487.2472/sharepointonline/icon.png","isTrigger":false,"operationName":"Update_My_Note","operationDefinition":{"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_sharepointonline","operationId":"HttpRequest","apiId":"/providers/Microsoft.PowerApps/apis/shared_sharepointonline"},"parameters":{"dataset":"https://presence.teams.microsoft.com","parameters/method":"PUT","parameters/uri":"/v1/me/publishnote","parameters/headers":{"content-type":"application/json"},"parameters/body":"{\n \"message\": \"@{if(outputs('Get_Current_Song')['body']['is_playing'],concat(':musical_notes::guitar: to ',outputs('Get_Current_Song')['body/item/name'],' by ',first(outputs('Get_Current_Song')['body/item/album/artists'])?['name']),':face_screaming_in_fear: hell is freezing, im not listening to music')} <pinnednote></pinnednote>\",\n \"expiry\": \"@{addSeconds(utcnow(),div(sub(outputs('Get_Current_Song')?['body']?['item']?['duration_ms'],outputs('Get_Current_Song')?['body']?['progress_ms']),1000))\r\n}\"\n}"},"authentication":{"type":"Raw","value":"@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$ConnectionKey']"}},"runAfter":{"Get_Current_Song":["Succeeded"]}}}

 

Emojis aren't working for me... :sad: when I save - they disappear and turn into expressions??  See below...

 

DamoBird365_0-1632144328271.png

 

will try a little later :) thanks for sharing again. I love when everyone helps improving again and again :) 

Senior Member

Ahhhh.. the forum supports limited Emojis!!  Hence why the musical notes and guitar is represented by :musical_notes::guitar: in the above sample!  I cannot ROFL either :rolling_on_the_floor_laughing: :cry:

 

DamoBird365_0-1632144476683.png

 

New Contributor

@Luise Freese I didn't try custom connectors yet. It is in my "must try, must learn, must do backlog" ;).
For now I really liked the alternative approach to Parse JSON step, for me it was a new thing I learned that day :p . I almost always used parse json as second step for any response. 

%3CLINGO-SUB%20id%3D%22lingo-sub-2764113%22%20slang%3D%22en-US%22%3ERe%3A%204%20ways%20to%20level%20up%20your%20Power%20Automate%20flows%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2764113%22%20slang%3D%22en-US%22%3E%3CP%3Ethis%20is%20cool%20%3A).%20BTW%2C%20isn't%20like%20'b)'%20twice%20%3B)%3C%2Fimg%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2763560%22%20slang%3D%22en-US%22%3E4%20ways%20to%20level%20up%20your%20Power%20Automate%20flows%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2763560%22%20slang%3D%22en-US%22%3E%3CH2%20id%3D%22intro%22%20id%3D%22toc-hId--351552307%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%20id%3D%22toc-hId--351552301%22%3EIntro%3C%2FH2%3E%0A%3CP%3EA%20while%20back%2C%20I%20wrote%20about%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CA%20href%3D%22https%3A%2F%2Fwww.m365princess.com%2Fblogs%2F2021-02-23-how-to-use-a-custom-connector-in-power-automate%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3EHow%20to%20use%20a%20custom%20connector%20in%20Power%20Automate%3C%2FA%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eshowing%20how%20easy%20you%20can%20create%20a%20connector%20to%20a%20cloud%20service%20that%20is%20not%20already%20in%20the%20very%20long%20list%20of%20connectors%20in%20Power%20Automate.%20I%20chose%20to%20create%20a%20connector%20for%20Spotify%20and%20connected%20a%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3EGet_Current_Song%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eaction%20with%20an%20IOT%20button%20and%20twitter.%20As%20a%20result%2C%20information%20about%20the%20song%20I%20would%20be%20listening%20to%20would%20be%20tweeted.%3C%2FP%3E%0A%3CP%3ENow%20I%20stumbled%20upon%20a%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CA%20href%3D%22https%3A%2F%2Fwww.loryanstrant.com%2F2021%2F09%2F16%2Fhow-to-display-the-currently-playing-spotify-track-as-your-teams-status-message%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3Ereally%20great%20blog%20post%3C%2FA%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eby%20fellow%20MVP%20Loryan%20Strant%20who%20also%20used%20this%20Spotify%20connector%20to%20change%20the%20pinned%20message%20of%20your%20status%20in%20Microsoft%20Teams.%20To%20get%20the%20most%20value%20out%20of%20this%20post%2C%20go%20read%20Loryans%20post%20first-%20it%20is%20written%20with%20great%20clarity%20and%20also%20I%20love%20this%20guys'%20taste%20of%20music%20%3Amusical_notes%3A!%20Also%20please%20understand%20his%20flow%20first.%20I%20love%20the%20idea%20and%20creativity!%20The%20result%20of%20such%20a%20flow%20looks%20like%20this%3A%3C%2FP%3E%0A%3CDIV%20id%3D%22tinyMceEditorLuiseFreese_0%22%20class%3D%22mceNonEditable%20lia-copypaste-placeholder%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22Teams-status.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F311292i73BEAA2012A971BA%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Teams-status.png%22%20alt%3D%22Teams-status.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EWhile%20some%20would%20debate%20if%20this%20flow%20is%20necessary%2C%20I%20feel%20it%20shows%20that%20custom%20connectors%20are%20a%20great%20way%20to%20extend%20Microsoft%20365.%20Also%3A%20%23MusicWasMyFirstLove%20-%20case%20closed%20%3A)%3C%2Fimg%3E%3C%2FP%3E%0A%3CP%3EHowever%20when%20reading%20this%20blog%20post%2C%20I%20saw%20some%20patterns%20that%20I%20often%20see%20in%20flows%20and%20that%20could%20be%20improved%20-%20and%20as%20I%20could%20already%20learn%20so%20much%20from%20Loryan%2C%20this%20time%20I%20hope%20to%20return%20the%20favor%20%3A)%3C%2Fimg%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ELoryan%20created%2013%20actions%20and%20as%20I%20seem%20to%20be%20just%20more%20lazy%20than%20he%20is%2C%20therefore%20I%20thinned%20out%20his%20awesome%20idea%20to%20just%205-6%20actions%3A%20This%20is%20what%20it%20looks%20like%3A%3C%2FP%3E%0A%3CDIV%20id%3D%22tinyMceEditorLuiseFreese_1%22%20class%3D%22mceNonEditable%20lia-copypaste-placeholder%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22flow-overview.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F311290i347E9071AFFA36AE%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22flow-overview.png%22%20alt%3D%22flow-overview.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20result%20is%20about%20the%20same%20-%20just%20that%20I%20display%20also%20a%20message%20if%20I%20am%20currently%20not%20listening%20to%20music%20(yes%2C%20this%20happens!)%3C%2FP%3E%0A%3CH2%20id%3D%22parse-json%22%20id%3D%22toc-hId-2135960526%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%20id%3D%22toc-hId-2135960532%22%3EParse%20JSON%3C%2FH2%3E%0A%3CP%3EFirst%20thing%20I%20wanted%20get%20rid%20of%20was%20the%20Parse%20JSON%20action.%20While%20it%20is%20super%20powerful%20and%20lets%20you%20easily%20access%20properties%20of%20objects%20that%20you%20get%20as%20response%2C%20it%20is%20unnecessary%20sometimes%3A%20We%20can%20also%20write%20the%20flow%20without%20it%20if%20we%20take%20a%20look%20on%20how%20we%20can%20select%20properties%20and%20return%20their%20values%20in%20expressions.%3C%2FP%3E%0A%3CP%3ETo%20be%20successful%20with%20that%2C%20it%20is%20crucial%20to%20understand%20the%20JSON%20schema%20of%20the%20response%20we%20are%20interested%20in.%20Easiest%20way%20to%20achieve%20that%3A%3C%2FP%3E%0A%3CP%3Ea)%20copy%20the%20body%20of%20the%20output%20of%20that%20action%2C%20paste%20it%20into%20a%20code%20editor%20-%20I%20work%20with%20Visual%20Studio%20Code%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22flow-output.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F311289i8B4E40CC42008A08%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22flow-output.png%22%20alt%3D%22flow-output.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3Eb)%20we%20make%20sure%20that%20we%20select%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3EJSON%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eas%20language%20-%20VS%20Code%20will%20then%20color%20everything%20nicely%20for%20us%20and%20highlight%20beginning%20and%20ends%20of%20objects%20for%20example%3C%2FP%3E%0A%3CP%3Ec)%20we%20have%20a%20look%20at%20the%20code.%20For%20the%20sake%20of%20better%20readability%20-%20this%20schema%20is%20about%20450%20lines%20long%2C%20I%20already%20collapsed%20two%20arrays%20called%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eavailable%20markets%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E-%20it%E2%80%99s%20a%20long%20list%20of%20country%20codes%20in%20which%20a%20particular%20song%20is%20available.%20We%20don%E2%80%99t%20need%20it%20here.%20If%20you%20aim%20to%20rebuild%20this%2C%20its%20highly%20recommended%20to%20copy%20the%20code%20from%20YOUR%20output%2C%20not%20from%20this%20blog%20post%2C%20as%20I%20shortened%20the%20code.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%3E%3CCODE%3E%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22timestamp%22%3A%201631969547352%2C%0A%20%20%20%20%20%20%20%20%22progress_ms%22%3A%2085903%2C%0A%20%20%20%20%20%20%20%20%22item%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22album%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22album_type%22%3A%20%22album%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22artists%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22external_urls%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22spotify%22%3A%20%22https%3A%2F%2Fopen.spotify.com%2Fartist%2F3CQIn7N5CuRDP8wEI7FiDA%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22href%22%3A%20%22https%3A%2F%2Fapi.spotify.com%2Fv1%2Fartists%2F3CQIn7N5CuRDP8wEI7FiDA%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22id%22%3A%20%223CQIn7N5CuRDP8wEI7FiDA%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22Run%E2%80%93D.M.C.%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22artist%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22uri%22%3A%20%22spotify%3Aartist%3A3CQIn7N5CuRDP8wEI7FiDA%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22available_markets%22%3A%20%5B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22external_urls%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22spotify%22%3A%20%22https%3A%2F%2Fopen.spotify.com%2Falbum%2F7AFsTiojVaB2I58oZ1tMRg%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22href%22%3A%20%22https%3A%2F%2Fapi.spotify.com%2Fv1%2Falbums%2F7AFsTiojVaB2I58oZ1tMRg%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22id%22%3A%20%227AFsTiojVaB2I58oZ1tMRg%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22images%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22height%22%3A%20640%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22url%22%3A%20%22https%3A%2F%2Fi.scdn.co%2Fimage%2Fab67616d0000b273894ae4df775c6b47438991af%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22width%22%3A%20640%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22height%22%3A%20300%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22url%22%3A%20%22https%3A%2F%2Fi.scdn.co%2Fimage%2Fab67616d00001e02894ae4df775c6b47438991af%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22width%22%3A%20300%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22height%22%3A%2064%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22url%22%3A%20%22https%3A%2F%2Fi.scdn.co%2Fimage%2Fab67616d00004851894ae4df775c6b47438991af%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22width%22%3A%2064%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22Raising%20Hell%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22release_date%22%3A%20%221986-05-15%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22release_date_precision%22%3A%20%22day%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22total_tracks%22%3A%2012%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22album%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22uri%22%3A%20%22spotify%3Aalbum%3A7AFsTiojVaB2I58oZ1tMRg%22%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22artists%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22external_urls%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22spotify%22%3A%20%22https%3A%2F%2Fopen.spotify.com%2Fartist%2F3CQIn7N5CuRDP8wEI7FiDA%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22href%22%3A%20%22https%3A%2F%2Fapi.spotify.com%2Fv1%2Fartists%2F3CQIn7N5CuRDP8wEI7FiDA%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22id%22%3A%20%223CQIn7N5CuRDP8wEI7FiDA%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22Run%E2%80%93D.M.C.%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22artist%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22uri%22%3A%20%22spotify%3Aartist%3A3CQIn7N5CuRDP8wEI7FiDA%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22external_urls%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22spotify%22%3A%20%22https%3A%2F%2Fopen.spotify.com%2Fartist%2F7Ey4PD4MYsKc5I2dolUwbH%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22href%22%3A%20%22https%3A%2F%2Fapi.spotify.com%2Fv1%2Fartists%2F7Ey4PD4MYsKc5I2dolUwbH%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22id%22%3A%20%227Ey4PD4MYsKc5I2dolUwbH%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22Aerosmith%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22artist%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22uri%22%3A%20%22spotify%3Aartist%3A7Ey4PD4MYsKc5I2dolUwbH%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%22available_markets%22%3A%20%5B%0A%0A%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%22disc_number%22%3A%201%2C%0A%20%20%20%20%20%20%20%20%20%20%22duration_ms%22%3A%20310386%2C%0A%20%20%20%20%20%20%20%20%20%20%22explicit%22%3A%20false%2C%0A%20%20%20%20%20%20%20%20%20%20%22external_ids%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22isrc%22%3A%20%22USAR19900334%22%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22external_urls%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22spotify%22%3A%20%22https%3A%2F%2Fopen.spotify.com%2Ftrack%2F6qUEOWqOzu1rLPUPQ1ECpx%22%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22href%22%3A%20%22https%3A%2F%2Fapi.spotify.com%2Fv1%2Ftracks%2F6qUEOWqOzu1rLPUPQ1ECpx%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22id%22%3A%20%226qUEOWqOzu1rLPUPQ1ECpx%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22is_local%22%3A%20false%2C%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22Walk%20This%20Way%20(feat.%20Aerosmith)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22popularity%22%3A%2069%2C%0A%20%20%20%20%20%20%20%20%20%20%22preview_url%22%3A%20%22https%3A%2F%2Fp.scdn.co%2Fmp3-preview%2Fc7a8010bbddcd0d793a832de76a24d2cae5ab497%3Fcid%3D2e75e650d1e74b6a994734ed4aea2ef7%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22track_number%22%3A%204%2C%0A%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22track%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22uri%22%3A%20%22spotify%3Atrack%3A6qUEOWqOzu1rLPUPQ1ECpx%22%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22currently_playing_type%22%3A%20%22track%22%2C%0A%20%20%20%20%20%20%20%20%22actions%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22disallows%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22resuming%22%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22toggling_repeat_context%22%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22toggling_repeat_track%22%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22toggling_shuffle%22%3A%20true%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22is_playing%22%3A%20true%0A%20%20%20%20%20%20%7D%0A%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CDIV%20id%3D%22tinyMceEditorLuiseFreese_2%22%20class%3D%22mceNonEditable%20lia-copypaste-placeholder%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CP%3Eb)%20look%20for%20the%20properties%20you%20are%20interested%20in%20-%20for%20example%20we%20want%20to%20if%20a%20song%20is%20playing%20right%20now%20-%20we%20will%20find%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eis_playing%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty%2C%20which%20will%20either%20return%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Etrue%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eor%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Efalse%3C%2FCODE%3E%2C%20which%20makes%20it%20perfect%20to%20put%20this%20into%20our%20condition%3A%3C%2FP%3E%0A%3CDIV%20id%3D%22tinyMceEditorLuiseFreese_3%22%20class%3D%22mceNonEditable%20lia-copypaste-placeholder%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22flow-condition.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F311288i14EE0D4A22C2B18F%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22flow-condition.png%22%20alt%3D%22flow-condition.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20expression%20is%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eoutputs('Get_Current_Song')%5B'body'%5D%5B'is_playing'%5D%3C%2FCODE%3E.%3C%2FP%3E%0A%3CP%3EWhy%20is%20that%3F%20Let%E2%80%99s%20deconstruct%20this%3A%20From%20the%20output%20of%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3EGet_Current_Song%3C%2FCODE%3E%2C%20we%20are%20interested%20in%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3E%5B'body'%5D%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eand%20inside%20of%20this%20we%20want%20the%20value%20of%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3E%5B'is_playing'%5D%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty%3C%2FP%3E%0A%3CP%3ENow%20if%20we%20are%20also%20interested%20in%20the%20name%20of%20the%20song%2C%20we%20would%20do%20a%20quick%20search%20in%20that%20file%20for%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Ename%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eand%20get%20four%20results%3A%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3Ein%20line%2014%3A%20this%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Ename%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty%20sits%20in%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eartists%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Earray%2C%20that%20consists%20of%20an%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Ealbum%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eobject%20and%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Ename%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty%20here%20refers%20to%20the%20name%20of%20the%20artist%20of%20album%2C%20not%20to%20the%20name%20of%20the%20song%20that%20we%20are%20interested%20in.%3C%2FLI%3E%0A%3CLI%3Ein%20line%20221%3A%20this%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Ename%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty%20also%20sits%20in%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Ealbum%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eobject%20and%20refers%20to%20the%20name%20of%20the%20album.%3C%2FLI%3E%0A%3CLI%3Eline%20235%3A%20this%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Ename%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty%20sits%20in%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eartists%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eobject%20and%20refers%20again%20to%20the%20name%20of%20the%20artist.%3C%2FLI%3E%0A%3CLI%3Efinally%2C%20in%20line%20432%2C%20we%20find%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Ename%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty%20we%20were%20looking%20for%3B%20it%20sits%20in%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eitem%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty.%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3ETherefore%2C%20we%20will%20access%20the%20song%20name%20with%3A%3C%2FP%3E%0A%3CP%3E%3CCODE%3Eoutputs('Get_Current_Song')%5B'body'%5D%3F%5B'item'%5D%3F%5B'name%5D%3C%2FCODE%3E%3C%2FP%3E%0A%3CP%3EIf%20we%20now%20also%20want%20to%20have%20the%20name%20of%20the%20artist%2C%20we%20get%20this%20with%3A%3C%2FP%3E%0A%3CP%3E%3CCODE%3Eoutputs('Get_Current_Song')%5B'body'%5D%3F%5B'item'%5D%3F%5B'album%5D%3F%5B'artists%5D%5B0%5D%3F%5B'name'%5D%3C%2FCODE%3E%3C%2FP%3E%0A%3CP%3EWait%2C%20what%3F%20These%20are%20a%20lot%20of%20properties%2C%20so%20let%E2%80%99s%20slow%20down%20for%20a%20bit%20to%20take%20a%20closer%20look%3A%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3Ewe%20get%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3EGet_Current_Song%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eaction%20with%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eoutputs('Get_Current_Song')%3C%2FCODE%3E%3C%2FLI%3E%0A%3CLI%3Enow%20we%20go%20ahead%20and%20with%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3E%3F%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eoperator%20and%20select%20the%20first%20level%20property%20we%20are%20interested%20in%3A%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eitem%3C%2FCODE%3E%3C%2FLI%3E%0A%3CLI%3Enext%20up%20is%20taking%20a%20look%20inside%20of%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eitem%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty%3A%20what%20do%20we%20want%20to%20get%20here%3F%20It%E2%80%99s%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Ealbum%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty.%20We%20do%20this%20as%20before%20with%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3E%3F%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eand%20the%20name%20of%20the%20property%20in%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3E%5B%5D%3C%2FCODE%3E%3A%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3E%3F%5B'album'%5D%3C%2FCODE%3E%3C%2FLI%3E%0A%3CLI%3EInside%20of%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Ealbum%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty%20we%20want%20to%20get%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eartists%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty%20and%20yet%20again%20we%20do%20this%20with%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3E%3F%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eand%20the%20name%20of%20the%20property%20in%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3E%5B%5D%3C%2FCODE%3E%3A%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3E%3F%5B'artists'%5D%3C%2FCODE%3E%3C%2FLI%3E%0A%3CLI%3ENow%20remember%20that%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eartists%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Ewas%20an%20array%3F%20You%20can%20see%20this%20by%20the%20brackets%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3E%5B%5D%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Ein%20the%20code.%20We%20want%20to%20return%20the%20first%20element%20of%20this%20array%2C%20therefore%20we%20put%20a%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3E%5B0%5D%3C%2FCODE%3E.%20It%E2%80%99s%20a%20zero%2C%20because%20arrays%20in%20JSON%20are%20zero-based%2C%20which%20means%20that%20the%20first%20element%20of%20an%20array%20has%20the%20index%200%2C%20the%20second%20one%20has%20index%201%2C%20and%20so%20on.%3C%2FLI%3E%0A%3CLI%3ENow%20that%20we%20returned%20that%20first%20element%20in%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eartists%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Earray%20(it%E2%80%99s%20only%20one%2C%20but%20Power%20Automate%20will%20yell%20at%20you%20if%20you%20don%E2%80%99t%20select%20just%20one%20element%20and%20instead%20return%20the%20entire%20array)%2C%20we%20will%20go%20ahead%20and%20finally%20select%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Ename%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty%20from%20it%2C%20which%20refers%20to%20the%20artist.%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3EYou%20see%2C%20it%E2%80%99s%20all%20about%20understanding%20the%20underlying%20JSON%20schema%20and%20see%2C%20which%20properties%20are%20part%20of%20which%20objects.%20If%20you%20use%20the%20Parse%20JSON%20action%2C%20you%20don%E2%80%99t%20need%20to%20write%20these%20expressions%2C%20but%20you%20face%20some%20disadvantages%3A%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3Eyou%20can%20now%20select%20from%20four%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Ename%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperties%20in%20your%20dynamic%20content%20-%20and%20need%20to%20select%20blindly%3C%2FLI%3E%0A%3CLI%3EYou%20have%20no%20clue%20WHY%20you%20get%20four%20of%20those%20as%20you%20don%E2%80%99t%20understand%20the%20data%20structure%3C%2FLI%3E%0A%3CLI%3EParse%20JSON%20is%20yet%20another%20action%20which%20blows%20up%20your%20flow%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CH2%20id%3D%22unnecessary-apply-to-each-loops%22%20id%3D%22toc-hId-328506063%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%20id%3D%22toc-hId-328506069%22%3Eunnecessary%20Apply-to-each%20loops%3C%2FH2%3E%0A%3CP%3EYou%20know%20that%20moment%20when%20you%20are%20creating%20a%20flow%20and%20and%20out%20of%20a%20sudden%20Power%20Automates%20automatically%20adds%20an%20Apply-to-each%20for%20you%20and%20you%20wonder%20why%20this%20happened%3F%20Also%2C%20you%20will%20face%20some%20issues%20later%20on%3F%20Wherever%20possible%20it%E2%80%99s%20a%20good%20idea%20to%20avoid%20loops%20that%20are%20not%20necessary.%3C%2FP%3E%0A%3CP%3EThe%20fact%20that%20we%20didn%E2%80%99t%20just%20parse%20the%20JSON%20output%20from%20our%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3EGet_Current_Song%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eaction%20but%20understood%20the%20JSON%20schema%20gives%20us%20an%20option%20to%20avoid%20a%20loop%20-%20we%20did%20not%20return%20an%20array%20of%20(one)%20artist%2C%20that%20triggered%20Power%20Automate%20to%20insert%20an%20apply-to-each%20loop%2C%20but%20we%20only%20returned%20the%20first%20element%20of%20the%20artist%20array%20-%20this%20way%20we%20don%E2%80%99t%20need%20to%20loop%20over%20this%20one-element-array%2C%20which%20means%20that%20we%20got%20rid%20of%20another%20action!%3C%2FP%3E%0A%3CH2%20id%3D%22variables-and-expressions%22%20id%3D%22toc-hId--1478948400%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%20id%3D%22toc-hId--1478948394%22%3Evariables%20and%20expressions%3C%2FH2%3E%0A%3CP%3EPower%20Automate%20knows%20some%20nice%20actions%20for%20variables%20-%20the%20most%20important%20one%20is%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Einitialize%20variable%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E-%20in%20Power%20Automate%20all%20variables%20need%20to%20be%20initialized%20(with%20or%20without%20value)%20before%20we%20can%20use%20them.%3C%2FP%3E%0A%3CP%3ENow%20as%20we%20already%20skipped%20successfully%20the%20Parse%20JSON%20action%20and%20could%20also%20access%20artist%20name%20and%20song%20name%20without%20the%20use%20of%20variables%20but%20in%20expressions%2C%20I%20want%20to%20minimize%20the%20other%20initialize%20variables%20and%20compose%20actions%20from%20Loryans%20flow%3A%3C%2FP%3E%0A%3CP%3EInstead%20of%20several%20actions%20and%20calculations%20to%3C%2FP%3E%0A%3CP%3E%E2%80%93%20get%20the%20timestamp%20when%20the%20song%20started%20%E2%80%93%20get%20the%20current%20time%20%E2%80%93%20add%20the%20duration%20of%20the%20currently%20playing%20song%20to%20the%20current%20time%2C%3C%2FP%3E%0A%3CP%3Ewe%20could%20have%20one%20variable%20called%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eduration%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Ewith%20this%20expression%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CCODE%3EaddSeconds(utcnow()%2Cdiv(sub(outputs('Get_Current_Song')%3F%5B'body'%5D%3F%5B'item'%5D%3F%5B'duration_ms'%5D%2Coutputs('Get_Current_Song')%3F%5B'body'%5D%3F%5B'progress_ms'%5D)%2C1000))%3C%2FCODE%3E%3C%2FP%3E%0A%3CP%3EExplanation%3A%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3EThis%20adds%20seconds%20to%20utcnow()%2C%20which%20is%20the%20current%20time.%3C%2FLI%3E%0A%3CLI%3EHow%20many%20seconds%3F%20The%20return%20value%20from%20the%20subtraction%20of%20the%20duration%20in%20milliseconds%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3E%5B'duration_ms'%5D%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eminus%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3E%5B'progress_ms'%5D%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Ecurrent%20progress%20in%20milliseconds%3C%2FLI%3E%0A%3CLI%3EWith%20the%20div%20function%20this%20value%20is%20divided%20by%201000%20as%20we%20want%20seconds%20instead%20of%20milliseconds.%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CH2%20id%3D%22understand-apis%22%20id%3D%22toc-hId-1008564433%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%20id%3D%22toc-hId-1008564439%22%3Eunderstand%20the%20API%20you%20are%20working%20with%3C%2FH2%3E%0A%3CP%3EThe%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3EGet_Current_Song%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Ereturns%20the%20LAST%20song%20that%20was%20played%20-%20and%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eis_playing%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty%20returns%20if%20the%20song%20is%20currently%20(still)%20playing%20or%20not.%20This%20means%2C%20that%20we%20need%20to%20distinguish%20between%20a%20song%20that%20played%20before%20I%20needed%20to%20turn%20off%20the%20music%20and%20a%20currently%20playing%20song.%20You%20might%20say%2C%20well%2C%20this%20doesn%E2%80%99t%20really%20matter%20-%20but%20if%20we%20take%20a%20closer%20look%20to%20understand%2C%20which%20data%20is%20returned%20when%2C%20we%20would%20need%20to%20redesign%20our%20flow%3A%20The%20fact%20that%20we%20get%20an%20output%20of%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3EGet_Current_Song%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eeven%20if%20the%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Eis_playing%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Eproperty%20is%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Efalse%3C%2FCODE%3E%2C%20means%20that%20we%20don%E2%80%99t%20get%20a%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Enull%3C%2FCODE%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3Ewhen%20our%20subsequent%20actions%20expect%20an%20object%2C%20a%20string%2C%20an%20array%20or%20anything%20else%20that%20is%20NOT%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CCODE%3Enull%3C%2FCODE%3E.%20Yet%20again%2C%20understanding%20what%20happens%20behind%20the%20scenes%20because%20we%20understand%20the%20output%20of%20an%20action%20will%20make%20it%20easier%20to%20create%20flows.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-2763560%22%20slang%3D%22en-US%22%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22lego-music.jpg%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F311291i420B512F62415D2D%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22lego-music.jpg%22%20alt%3D%22lego-music.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3ELearn%20to%20understand%20JSON%20output%2C%20deal%20with%20expressions%20and%20simplify%20your%20flows.%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2763560%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EHow%20to%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2766400%22%20slang%3D%22en-US%22%3ERe%3A%204%20ways%20to%20level%20up%20your%20Power%20Automate%20flows%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2766400%22%20slang%3D%22en-US%22%3E%3CP%3Egood%20catch%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F972728%22%20target%3D%22_blank%22%3E%40AdamWoj%3C%2FA%3E%26nbsp%3B-%20thanks%20for%20thoroughly%20reading%20this!%20Did%20you%20already%20play%20with%20custom%20connectors%3F%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2766691%22%20slang%3D%22en-US%22%3ERe%3A%204%20ways%20to%20level%20up%20your%20Power%20Automate%20flows%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2766691%22%20slang%3D%22en-US%22%3E%3CP%3EHi%20%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F89985%22%20target%3D%22_blank%22%3E%40Luise%20Freese%3C%2FA%3E%2C%20I%20love%20that%20you%20have%20simplified%20Loryan's%20example%20of%20adding%20your%20current%20playing%20song%20to%20your%20Teams%20status%20message.%26nbsp%3B%20I%20have%20another%20couple%20of%20simplification%20suggestions%20that%20I%20would%20like%20to%20share.%26nbsp%3B%20I%20believe%20you%20can%20build%20the%20above%20with%202%20actions.%26nbsp%3B%20The%20custom%20connector%20that%20you%20have%20built%20and%20the%20update%20status%20message%20API%20call.%26nbsp%3B%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EUsing%20the%20following%20expression%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3Eif(outputs('Get_Current_Song')%5B'body'%5D%5B'is_playing'%5D)%2Cconcat('%3Amusical_notes%3A%3Aguitar%3A%20to%20'%2Coutputs('Get_Current_Song')%5B'body%2Fitem%2Fname'%5D%2C'%20by%20'%2Cfirst(outputs('Get_Current_Song')%5B'body%2Fitem%2Falbum%2Fartists'%5D)%3F%5B'name'%5D%2C'%3Aface_screaming_in_fear%3A%20hell%20is%20freezing%2C%20im%20not%20listening%20to%20music')%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E....you%20can%20make%20the%20message%20of%20the%20body%20dynamic.%26nbsp%3B%20If%20'is_playing'%20is%20true%2C%20present%20your%20first%20message%20with%20a%20concat%20of%20the%20emoji%20strings%20and%20values%2C%20else%20present%20hell%20is%20freezing%20over%20etc.%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EYou%20can%20also%20add%20your%20expression%26nbsp%3BaddSeconds(utcnow()%2Cdiv(sub(outputs('Get_Current_Song')%3F%5B'body'%5D%3F%5B'item'%5D%3F%5B'duration_ms'%5D%2Coutputs('Get_Current_Song')%3F%5B'body'%5D%3F%5B'progress_ms'%5D)%2C1000))%20straight%20into%20the%20message%20too%20and%3CSPAN%20style%3D%22font-family%3A%20inherit%3B%22%3E%26nbsp%3Bnegate%20the%20need%20for%20the%20variable.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20inherit%3B%22%3EBelow%20shows%20the%20action%20without%20the%20need%20of%20a%20condition%20or%20variable.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22DamoBird365_0-1632134323314.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F311482iB59360A7AA155D15%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22DamoBird365_0-1632134323314.png%22%20alt%3D%22DamoBird365_0-1632134323314.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EI%20love%20simplification%20and%20efficiency%2C%20and%20it%20is%20always%20really%20interesting%20to%20see%20different%20methods%20of%20the%20same%20thing%20(like%20the%20construction%20of%20array%20paths)%3C%2FP%3E%0A%3CP%3Eoutputs('Get_Current_Song')%5B'body%2Fitem%2Falbum%2Fartists'%5D)%20vs%20outputs('Get_Current_Song').body.item.album.artists%20and%20why%20we%20include%20a%20%3F%20to%20return%20a%20null%20if%20no%20value%20is%20found.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2766757%22%20slang%3D%22en-US%22%3ERe%3A%204%20ways%20to%20level%20up%20your%20Power%20Automate%20flows%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2766757%22%20slang%3D%22en-US%22%3E%3CP%3Eomg%20this%20is%20so%20cool%2C%20love%20this%20so%20much!%20And%20yes%2C%20different%20approaches%20FTW!%20Will%20give%20it%20a%20try%20%3A)%3C%2Fimg%3E%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1035201%22%20target%3D%22_blank%22%3E%40DamoBird365%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2767112%22%20slang%3D%22en-US%22%3ERe%3A%204%20ways%20to%20level%20up%20your%20Power%20Automate%20flows%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2767112%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1035201%22%20target%3D%22_blank%22%3E%40DamoBird365%3C%2FA%3E%26nbsp%3B-%20I%20don't%20get%20the%20emojis%20to%20render%20correctly%20with%20your%20approach%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22LuiseFreese_0-1632143395436.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F311515i4DFF73AB40105394%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22LuiseFreese_0-1632143395436.png%22%20alt%3D%22LuiseFreese_0-1632143395436.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3Ealso%2C%20you%20lost%20a%20closing%20parenthesis%20after%20%60%3F%5B'name'%5D%60%20to%20exit%20the%20concat%20function%20%3A)%3C%2Fimg%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2767135%22%20slang%3D%22en-US%22%3ERe%3A%204%20ways%20to%20level%20up%20your%20Power%20Automate%20flows%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2767135%22%20slang%3D%22en-US%22%3E%3CP%3EI%20don't%20think%20the%20emoji%20copy%2Fpaste%20thing%20works%20-%20agreed.%26nbsp%3B%20Do%20you%20use%26nbsp%3B%20%22%20Windows%20Key%20%2B%20.%20%22%20to%20get%20these%3F%26nbsp%3B%20Are%20you%20able%20to%20paste%20the%20below%20JSON%20into%20your%20flow%20-%20using%20new%20step%20-%26gt%3B%20my%20clipboard%3F%26nbsp%3B%20Good%20spot%20on%20the%20closing%20)%2C%20don't%20know%20where%20it%20wandered%20off%20to%3F!%26nbsp%3B%20%3Arolling_on_the_floor_laughing%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%7B%22id%22%3A%22df0e4d26-44fb-444b-834d-60ef-e65bbf57%22%2C%22brandColor%22%3A%22%23036C70%22%2C%22connectionReferences%22%3A%7B%22shared_sharepointonline%22%3A%7B%22connection%22%3A%7B%22id%22%3A%22%2Fproviders%2FMicrosoft.PowerApps%2Fapis%2Fshared_sharepointonline%2Fconnections%2F64fe180a9817427a81aa7d96a25630de%22%7D%7D%7D%2C%22connectorDisplayName%22%3A%22SharePoint%22%2C%22icon%22%3A%22%3CA%20href%3D%22https%3A%2F%2Fconnectoricons-prod.azureedge.net%2Freleases%2Fv1.0.1487%2F1.0.1487.2472%2Fsharepointonline%2Ficon.png%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3Ehttps%3A%2F%2Fconnectoricons-prod.azureedge.net%2Freleases%2Fv1.0.1487%2F1.0.1487.2472%2Fsharepointonline%2Ficon.png%3C%2FA%3E%22%2C%22isTrigger%22%3Afalse%2C%22operationName%22%3A%22Update_My_Note%22%2C%22operationDefinition%22%3A%7B%22type%22%3A%22OpenApiConnection%22%2C%22inputs%22%3A%7B%22host%22%3A%7B%22connectionName%22%3A%22shared_sharepointonline%22%2C%22operationId%22%3A%22HttpRequest%22%2C%22apiId%22%3A%22%2Fproviders%2FMicrosoft.PowerApps%2Fapis%2Fshared_sharepointonline%22%7D%2C%22parameters%22%3A%7B%22dataset%22%3A%22%3CA%20href%3D%22https%3A%2F%2Fpresence.teams.microsoft.com%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehttps%3A%2F%2Fpresence.teams.microsoft.com%3C%2FA%3E%22%2C%22parameters%2Fmethod%22%3A%22PUT%22%2C%22parameters%2Furi%22%3A%22%2Fv1%2Fme%2Fpublishnote%22%2C%22parameters%2Fheaders%22%3A%7B%22content-type%22%3A%22application%2Fjson%22%7D%2C%22parameters%2Fbody%22%3A%22%7B%5Cn%20%5C%22message%5C%22%3A%20%5C%22%40%7Bif(outputs('Get_Current_Song')%5B'body'%5D%5B'is_playing'%5D%2Cconcat('%3Amusical_notes%3A%3Aguitar%3A%20to%20'%2Coutputs('Get_Current_Song')%5B'body%2Fitem%2Fname'%5D%2C'%20by%20'%2Cfirst(outputs('Get_Current_Song')%5B'body%2Fitem%2Falbum%2Fartists'%5D)%3F%5B'name'%5D)%2C'%3Aface_screaming_in_fear%3A%20hell%20is%20freezing%2C%20im%20not%20listening%20to%20music')%7D%20%3CPINNEDNOTE%3E%3C%2FPINNEDNOTE%3E%5C%22%2C%5Cn%20%5C%22expiry%5C%22%3A%20%5C%22%40%7BaddSeconds(utcnow()%2Cdiv(sub(outputs('Get_Current_Song')%3F%5B'body'%5D%3F%5B'item'%5D%3F%5B'duration_ms'%5D%2Coutputs('Get_Current_Song')%3F%5B'body'%5D%3F%5B'progress_ms'%5D)%2C1000))%5Cr%5Cn%7D%5C%22%5Cn%7D%22%7D%2C%22authentication%22%3A%7B%22type%22%3A%22Raw%22%2C%22value%22%3A%22%40json(decodeBase64(triggerOutputs().headers%5B'X-MS-APIM-Tokens'%5D))%5B'%24ConnectionKey'%5D%22%7D%7D%2C%22runAfter%22%3A%7B%22Get_Current_Song%22%3A%5B%22Succeeded%22%5D%7D%7D%7D%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EEmojis%20aren't%20working%20for%20me...%26nbsp%3B%3CSPAN%3E%3CIMG%20class%3D%22lia-deferred-image%20lia-image-emoji%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Fhtml%2F%409839A717402516D64549B98324F4F0C1%2Fimages%2Femoticons%2Fsad_40x40_1.gif%22%20alt%3D%22%3Asad%3A%22%20title%3D%22%3Asad%3A%22%20%2F%3E%20when%20I%20save%20-%20they%20disappear%20and%20turn%20into%20expressions%3F%3F%26nbsp%3B%20See%20below...%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22DamoBird365_0-1632144328271.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F311517i9E6909204E0B6FE7%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22DamoBird365_0-1632144328271.png%22%20alt%3D%22DamoBird365_0-1632144328271.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2767139%22%20slang%3D%22en-US%22%3ERe%3A%204%20ways%20to%20level%20up%20your%20Power%20Automate%20flows%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2767139%22%20slang%3D%22en-US%22%3E%3CP%3Ewill%20try%20a%20little%20later%20%3A)%3C%2Fimg%3E%20thanks%20for%20sharing%20again.%20I%20love%20when%20everyone%20helps%20improving%20again%20and%20again%20%3A)%3C%2Fimg%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2767163%22%20slang%3D%22en-US%22%3ERe%3A%204%20ways%20to%20level%20up%20your%20Power%20Automate%20flows%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2767163%22%20slang%3D%22en-US%22%3E%3CP%3EAhhhh..%20the%20forum%20supports%20limited%20Emojis!!%26nbsp%3B%20Hence%20why%20the%20musical%20notes%20and%20guitar%20is%20represented%20by%26nbsp%3B%3CSPAN%3E%3Amusical_notes%3A%3Aguitar%3A%20in%20the%20above%20sample!%26nbsp%3B%20I%20cannot%20ROFL%20either%26nbsp%3B%3Arolling_on_the_floor_laughing%3A%26nbsp%3B%3CIMG%20class%3D%22lia-deferred-image%20lia-image-emoji%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Fhtml%2F%402F5B53C90739358292524B2CDF7F85DA%2Fimages%2Femoticons%2Fcry_40x40.gif%22%20alt%3D%22%3Acry%3A%22%20title%3D%22%3Acry%3A%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22DamoBird365_0-1632144476683.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F311518i57350BBFC1487FA3%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22DamoBird365_0-1632144476683.png%22%20alt%3D%22DamoBird365_0-1632144476683.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2776229%22%20slang%3D%22en-US%22%3ERe%3A%204%20ways%20to%20level%20up%20your%20Power%20Automate%20flows%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2776229%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F89985%22%20target%3D%22_blank%22%3E%40Luise%20Freese%3C%2FA%3E%26nbsp%3BI%20didn't%20try%26nbsp%3B%3CSPAN%3Ecustom%20connectors%20yet.%20It%20is%20in%20my%20%22must%20try%2C%20must%20learn%2C%20must%20do%20backlog%22%20%3B).%3CBR%20%2F%3EFor%20now%20I%20really%20liked%20the%20alternative%20approach%20to%26nbsp%3BParse%20JSON%20step%2C%20for%20me%20it%20was%20a%20new%20thing%20I%20learned%20that%20day%20%3Ap%3C%2Fimg%3E%3C%2FSPAN%3E%20.%20I%20almost%20always%20used%20parse%20json%20as%20second%20step%20for%20any%20response.%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E
Co-Authors
Version history
Last update:
‎Sep 20 2021 01:35 AM
Updated by: