Power Automate – add more data to a CSV log file

  • Post category:Flow
  • Post comments:2 Comments

This Power Automate workflow adds data to the same CSV file after each run. The most common use case is saving results of the workflow to a CSV log file. Of course, it would be a bit more complicated than my test scenario but the concept is exactly the same.

Pros of the workflow:

  • puts the most recent data at the top of the CSV file;
  • saves data into a single file rather than multiple (although each approach can have its use case);
  • the latter makes it much easier to search through.

The initial file can be empty (just the headers) or have some matching data:

1) Initialize variable action –  varArray variable (Array type). Value:

[
  {
    "Name": "John",
    "Date": "10/12/2022"
  },
  {
    "Name": "Jeff",
    "Date": "09/16/2022"
  }
]

2) Create CSV table action. From:

variables('varArray')

3) Initialize variable action –  CRLF variable (String type). Value:

uriComponentToString('%0D%0A')

4) Get file metadata using path action. Peek code:

"parameters": {
    "dataset": "https://contoso.sharepoint.com",
    "path": "/Shared Documents/Logs/TestLog.csv"
}

5) Get file content using path action. Peek code:

"parameters": {
    "dataset": "https://contoso.sharepoint.com",
    "path": "/Shared Documents/Logs/TestLog.csv",
    "inferContentType": true
}

6) Compose action. Inputs:

skip(
    split(
        base64ToString(
            outputs('Get_CSV_log_file_content_using_path')?['body']?['$content']
        ),
        variables('CRLF')
    ),
    1
)

7) Compose action. Inputs:

concat(
    body('Create_CSV_table_from_varArray'),
    join(
        outputs('All_lines_from_CSV_log_without_header'),
        variables('CRLF')
    )
)

8) Update file action. Peek code:

"parameters": {
    "dataset": "https://contoso.sharepoint.com",
    "id": "@outputs('Get_CSV_log_file_metadata_using_path')?['body/Id']",
    "body": "@outputs('Combination_of_old_CSV_log_and_new_data')"
}

RESULT

As you can see, the data from varArray was added to the top of the CSV log file.

 

This Post Has 2 Comments

  1. Kevin

    Could you expand on what you’re doing in step 3? I don’t understand what a CRLF is and what that step is accomplishing.

    1. Paul Bludov

      Hi Kevin,
      Step 3 is just an “initialize variable” action that is renamed into “Carriage Return Line Feed” (CRLF) – you can define one by expanding it and pressing an “Enter” button inside of that variable.

Leave a Reply