Use Power Automate to get Name and Email Address in Outlook Online
Inkey, September 27, 2024 818 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.
-
- Setting var_ToCcBccArray = Union of each element of From, To, CC, BCC
- Setting var_ToCcBccArray = concating NAME and EMAILADDRESS among all the details.
- Create CSV Table = This step stores the JSON data to text-formatted data.
- Setting var_ToCcBccHolder = var_ToCcBccAppender
- 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.
Leave a Reply