Blogs

Use Power Automate to get Name and Email Address in Outlook Online

, September 27, 20241495 Views

This  Power Automate Flow fetches Name and Email-address of the Person/(s) mentioned in the ‘From’, ‘To’, ‘CC’, ‘BCC’ mappings of the Outlook Online for a user-defined time-period i.e., Start Date and End Date and outputs the data in a Notepad .txt file in Outlook Online to a specific user-defined person email.

What are the input parameters for this Flow?

Start Date : From which date to fetch the Names and Email from.
End Date : Till which date we need to fetch the Names and Email from.
To Email Address : To whom the Output Notepad .txt file is to be mailed. [Can be single or multiple persons.]
Extract Emails only from INBOX Folder? : Whether to fetch data from INBOX folder or all the folders. Note this excludes Junk and Deleted Items folder.
Filter out Emails containing : The names or strings passed here are excluded. Filters are maintained & implemented internally.

What is the output of this flow?

The output is a Notepad .txt file generated and sent on Outlook Online To Email Address mentioned in the Input Parameter of the Flow containing Names and Email Address from user-defined date range: 15-Feb-2024 to 16-Feb-2024. Also mentioned is the execution details of the flow.

Notepad content: [Name and Email Address]

How does this Flow works/ Implementation:

Step by Step Flow:

  • These are the input parameters that are passed in the Trigger Time of the Flow.

  • Setting a Start-Time Variable to note the Total Execution Time.
    Storing utcNow() when the flow starts.

  • Graph API Call to fetch the folder names & its respective Id.
    [Note: the first 1000 folders are extracted, and it is but obvious that any user might not have more than 1000 folders in their Outlook Online.]

  • The Parse JSON steps parse the extracted Folder JSON.
  • Initializing var_AllFoldersId to store all the folder ids in Array format.
  • Initializing var_loopBreaker variable for loop-breaking purpose.

  • The logical condition for step 7 to extract the folder ids are:

Verifying/Testing the URL in GRAPH Explorer.

 

  • Created var_DateDiffInteger: Calculating and storing date difference between the input parameters Start Date and End Date.
  • Created var_ToCcBccArray: To store From, To, CC, BCC values in Arrays.
  • Created var_ToCcBccHolder: To store From, To, CC, BCC Holders for intermediate storing purpose.
  • Created var_ToCcBccAppender: To store From, To, CC, BCC Appenders for appending arrays.
  • Created var_DistinctEmailAddresses: To store distinct Email-Addresses from fetched Names & Emails.

  • Created var_FilterOutValues: Storing values that are passed in the Input Parameters ‘Filter out Emails containing’ which will be excluded in further steps.
  • Created var DateTime: Calculating the date-difference and storing it in variable.

  • To each extracted Folder Data which is stored in var_AllFoldersID,.

We are fetching the Folder-ID in the Compose Step.

In Do-Until Step, until the Date[StartDate + var_DateDiffInteger] is less than StartDate. Also make sure to change the limits of Count = 5000 and Timeout = P4D in Advanced Settings of Do Until Step.

Sending an HTTP Request to fetch the data from Mail Folder where Received date is greater than equal to yyyy-MM-dd 00:00:00 and less than equal to yyyy-MM-dd 23:59:59

Parsing JSON from above step.

Selecting ‘From’, ‘To’, ‘CC’, ‘BCC’ and storing it in var_ToCCBccArray.

Apply to Each Array Element in above Select Step.

    1. Setting var_ToCcBccArray = Union of each element of From, To, CC, BCC
    2. Setting var_ToCcBccArray = concating NAME and EMAILADDRESS among all the details.
    3. Create CSV Table = This step stores the JSON data to text-formatted data.
    4. Setting var_ToCcBccHolder = var_ToCcBccAppender
    5. Setting var_ToCcBccAppender = var_ToCcBccHolder + Create CSV Table

Decrementing var_DateDiffInteger by 1. And this value will be passed and iterated back

Resetting var_DateDiffInteger to its Start Date – End Date

  • Compose: Switching the case of the Names and Email-addresses to lowercase and replacing the newline characters with “;”
  • Splitting upon “;” to create an Array.
  • Union same output 2 times which is a method to fetch distinct records of array, and then sorting the array.
  • Storing the distinct Names and Email-addresses in var_DistinctEmailAddresses.

Filtering out unnecessary email and names that were mentioned in the Input Parameter ‘Filter out Emails containing’.

  • Converting the final array to text format and separating it with newline character.
  • Calculation of the Total Time taken to Execute the Flow.
  • Sending the Final Mail to the Recipient.