Showing posts with label MS Flows. Show all posts
Showing posts with label MS Flows. Show all posts

Sunday 2 January 2022

Power Automate: Update file metadata and preserve version history.

In this blog, we will be updating file properties/metadata whenever a new file is uploaded into the library.

In this approach, we will use the REST API and wrap it into a Power Automate flow.

Create Flow

Complete flow with all actions


Flow URL - https://flow.microsoft.com/

1. Open the flow, click on the Create option, and select "Automated Cloud Flow".


Enter Flow name.
Choose the flow trigger as "When an item is created".
Click the Create button.



2. Enter the "Site Address" SharePoint site URL and the "List Name" library title where flow needs to be associated.

Add a new action step, "Compose" and rename it "Compose-user".

In input, add an object as shown below. Created By Claims is value; here we will get the claims value of the user who is uploading the file.



3. Add a new action step again, "Compose" and rename it as "Compose-update".

In input, add an object as shown below.

  {

    "FieldName": "Internal column name",

    "FieldValue": "desired value"

  },

  {

    ............

  },

  .....

]

The input value will be an array of objects, and each object defines the configuration of the column to be updated. The FieldName is the internal column name, and the FieldValue is the desired value that you want to set in that column.

In my example, the Editor (Modified by) and Title columns are updated.

In the Editor FieldValue output of Compose-user will be set.

Note: Flow is running under the service account. If the Editor field is updated, then we can also preserve the Modified By column. Otherwise, the service account value will be updated in the Modified By column.



4. Add a new action step: Send an HTTP request to SharePoint.

Here we will compose a REST API request call.

  • Site Address: SharePoint site URL where the library is present
  • Method: POST
  • Uri: _api/web/lists/getbytitle('<List Title>')/items(<ID>)/validateUpdateListItem
  • Body: 

{
   "formValues": outputs('Compose_-_update'),
   "bNewDocumentUpdate":true
}


        validateUpdateListItem: REST API ValidateUpdateListItem() function to update listitem metadata

        formValues: The value must be the output of the second Compose action.

        bNewDocumentUpdate: true (Not to create any version on update) or false (Create a version on the update)

        For details refer: https://docs.microsoft.com/en-us/previous-versions/office/sharepoint-visio/jj246412(v=office.15)



        Upload the file to the Documents library and test the flow.


        🚀 "Happy Coding" 🚀

        Tuesday 19 November 2019

        Export PDF in Power Apps and Power Automate (MS Flows): Approach 1

        In this blog, we will be exporting the List Item details into the PDF document with a button click. This approach is based on the use of both PowerApps and PowerAutomate.

        In this scenario, a customized PowerApps form is there that is used to display data coming from the SharePoint list, and a button will be present on click of which users can export content into the PDF.

        Create Flow

        Complete flow with all actions


        1. Open the flow, click on the Create option, search for "PowerApps", and select the option "PowerApps button" which triggers the flow on button click.


        2. Add the "Initialize variable" action.
        Enter the required values: – Name, Type and Value. To initialize the value, click on "See more".

        Now click on the option "Ask in PowerApps"; it means the value will come from PowerApps form when flow is called as a parameter.

        Select and add the initialized values. Similarly, create a new variable. Filename and initialize.

        Now create the FileFullname variable. To initialize the value, select the Expression tab and concatenate the value of the filename variable with the .html file extension.

        Similarly, create a new variable, CurrentUser and initialize.

        3. Add "Create File" (OneDrive for Business) action.
        Click on the Folder icon present in the Folder Path textbox. Browse the library and select the folder under which the HTML file will be saved and later converted to PDF.

        Set the variables initialized above for File Name and File Content.

        4. Add the "Create file using path" (OneDrive for Business) action.
        Click inside the File Path textbox, and a callout will open. Select Path value from the Create file in OneDrive group under Dynamic content. Set PDF as the Target type.
        Note: Create file OneDrive is the previous action, and these are all the outputs of it.

        5. Add the "Send an email (V2)" (Office 365 Outlook) action.
        Provide the required value for this as shown below.


        Modify PowerApps Form

        1. Open the list where Export PDF functionality needs to be implemented. Click on "Customize forms" to open PowerApps.

        2. Add a new screen and add an HTML text control to it.

        3. Add the HTML content with dynamic values as shown. The content will be added in double quotes.


        4. Add a button for "Export to PDF" functionality. On the button, attach the flow.
            a. Select the button.
            b. On the Action tab, select Flows.
            c. All available flows will appear; select the required one.
            d. Choose the "OnSelect" option to RUN the flow and pass the required parameters.
            e. Save and Publish the PowerApps.

        5. Open the display form and click on the "Export PDF" button.

        6. The exported PDF will be sent to the current logged-in user's email..

        Check the final exported PDF here


        🚀 "Happy Coding" 🚀