community
cancel
Showing results for 
Search instead for 
Did you mean: 

Engine Works Blog

Under the hood of Alteryx: tips, tricks and how-tos.
Bolide

How does one automate that which cannot be automated?

 

We are in an information age.  An age where someone can monitor the security of their home and unlock their care from a mobile device; start streaming a movie at home, move to an iPad, and finish on a plane; and even blend, cleanse, and predict data with little or no data science knowledge.  And yet many, if not all of us, at some point have tried to gain access to data within our own organizations only to be met with the solution of “we can email you an Excel file”.  Really?!?  I can put money into my Starbucks account via my phone, and have Starbucks scan and recognize the payment, deduct the cost from my account and give me my bonus stars for the transaction, but the only solution you have to give me data is to email it to me?  Now is a good time to tell you something important about myself – I’m lazy.  I loathe manual, tedious, repetitive tasks.  I often joke with my coworkers that I’m going to automate everything I do so I can sit and watch YouTube all day.  In fact, were I to successfully automate myself out of a job I would consider that the single greatest accomplishment of my career.  As you can probably imagine, I was not willing to manually download and process Excel files each week.  Fortunately, I come from a software development background and was able to write code to extract attachments from Outlook emails and baked that into an SSIS package that ran weekly. 

 

OutlookInputTool.pngOutlook Input toolFast forward a couple of years to Inspire 2017.  I was having breakfast before the opening keynote and I heard an Alteryx employee talking about using Alteryx to blend data from a file she receives from another department.  I had a hunch and asked her how she gets those files.  I stifled a literal “LOL” moment when she said she receives them via email.  I told her I had some code that might help her get to a fully automated solution.  Later in the conference I attended a session on using the Alteryx API and SDK.  I paid particularly close attention to the SDK portion because at the time I had no idea creating custom tools was even an option.  I know this is going to sound lame and cliché, but at that moment I was truly inspired to jump into code and build my own custom input tool to pull attachments out of Outlook emails.  I know, I know, too corny.  Moving on.  As a fantastic conference was coming to a close I just happened to spot one of the engineers, @JPKa,  who hosted the session on using the API and SDK at the closing reception.  I told him my idea and he pointed me in the right direction to get started.  Two weeks of personal time later I had  a solid version 1  of the tool and I shared it with my friends at Alteryx.

 

 

 

Working with the SDK

 

OutlookToolConfig.pngOutlook Input Tool ConfigurationEverything I needed to get started was already installed with Alteryx Designer. I used a combination of reading through and interpreting the sample and the getting started documentation. Honestly, my first impression was confusion.  The sample project involves using an XML file containing Alteryx tool XML config information as an input to set the tool XML config information.  When it came to interpreting the code to understand how it was linking the xml config information to the input data I was often confused as to whether the xml components in question were part of the Alteryx configuration or the input tool that was providing the configuration.  Simply put, it was setting configuration from configuration. If anyone from Alteryx Product Management is reading this,  a better sample might be to pull dummy customer data from a .csv file and send it to an output stream.

 

My biggest obstacle was interpreting the sample code - figuring out how to separate the xml config as input from the xml config that was reading the input.  It makes perfect sense now, but when I was trying to understand the custom tool architecture and input file interpretation simultaneously for the first time I had some trouble.

 

 

Once I had a working tool I went back and forth with the folks at Alteryx and there were some limitations there with getting them the install and sharing attachments. I discovered I could wrap the install into a yxzp file and include instructions and a help file. JP was very helpful with identifying some of the nuances of working with the SDK and offered some suggestions on improving the tool. I needed to incorporate the "UpdateOnly" parameter because the C# code was executing every time a new tool was added to the canvas. I didn't know that the Alteryx Engine had a special feature where it runs the workflow (with no actual records other than metadata) every time a new tool is added.  

 

He also suggested I add some date filtering capability to the tool, allowing people to avoid downloading their entire inbox if they select “Inbox”.  For this I added a configuration element for the user to input a query string and included a link to the documentation to build the query.

 

 

 

Using the Outlook Input Tool

 

You may be tempted to point this sucker to your Inbox right out of the gate, and I don't know what your Inbox looks like, but if it looks anything like some of our testers, I'd advise against that. Play with your drafts folder or deleted items first.

 

You may find copying the search syntax from Outlook into the Query String helpful:

 

copy querystring.pngcopy the query string from outlook

 

As for me, this is how I've been using the tool. In this example I filter out a specific Excel file and send it through a Dynamic Input tool to see the results. I'll leave it up to you to discover new and interesting ways to consume the files that you no longer have to manually fish out of your inboxes.

 

OutlookInputToolSample.png

 

 

giphy-downsized (2).gifBut wait, there’s more!  Act now and as a bonus you get the added message stream allowing you to perform any number of analytics on your email messages.  And if that isn’t enough, join the two streams together on Message ID for maximum analytical potential!!

 

 

 

 

What's included in the package

 

You'll find an Alteryx *.yxzp file attached to this post. When you open it in Alteryx Designer, you will see installation instructions:

 

Outlook Tools Install instructions.png

 

and a help file

 

Outlook Tools Install help file.png

 

The workflow is a single RunCommand tool that will install the Outlook Input tool. You can find my source code on Git Hub.

 

I hope you find the Outlook Input tool useful. This has been a fun and exciting project and I can't wait to see what creative ways the community finds to use this tool. Use the comments below to let me know your experience working with the tool.

 

UPDATE 8/1/2017:

A new version is available on the gallery: https://gallery.alteryx.com/#!app/Outlook-Tools-Install/597b35c2f499c716ec34a782.

 

Changes:

  • Implemented paging to prevent timeouts through the Exchange Web Services when working with large inboxes and complex filters.  Note: you still may need to adjust throttling settings on your server: https://msdn.microsoft.com/en-us/library/office/jj945066(v=exchg.150).aspx.
  • Updated the installer to remove previously installed versions of the tools so it's not cluttering up your programs list.
Comments
Bolide

@Jchantnicki, wow that's quite an ask.  What you're asking for would be a separate output tool, which I have not developed yet :).  I guess go big or go home right LOL?  You certainly have a good use case though, so I would love to see what I can do for you but I would not likely get something built anytime soon unfortunately - especially since the requirements for sending data to Outlook are much more broad than pulling it out.  For example, as soon as I built it to handle movement of items from one folder to another, someone else would request item creation, which could drastically change the tool and the code behind it.  I will definitely consider it though.  In the meantime, could you set up a mail rule to move items after your Alteryx workflow is scheduled to run (assuming you're scheduling your workflow)?

Atom

The Outlook tool is awesome. Started using to extract message part (M) it worked fine, but when I configured it to save attachments (A). It saved 292 attachments and then stopped with error below. Any suggestions?  

 

OutlookInputTool (1) The specified object was not found in the store., The process failed to get the correct properties.¶ServiceResponseException¶ at Microsoft.Exchange.WebServices.Data.ServiceResponse.InternalThrowIfNecessary() ¶ at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute() ¶ at Microsoft.Exchange.WebServices.Data.ExchangeService.BindToItem(ItemId itemId, PropertySet propertySet) ¶ at Microsoft.Exchange.WebServices.Data.ExchangeService.BindToItem[TItem](ItemId itemId, PropertySet propertySet) ¶ at OutlookTools.OutlookEmail.GetItemsFromFolder(ExchangeService service, Object folder, Boolean isRoot) ¶ at OutlookTools.OutlookEmail.GetItems(Int64 recordLimit) ¶ at OutlookTools.OutlookInputToolEngine.PI_PushAllRecords(Int64 nRecordLimit) ¶ at SRC.Alteryx.GenericNetPluginInterface.PI_PushAllRecords(GenericNetPluginInterface* , Int64 nRecordLimit)

 

 

Bolide

@Kestutis, I was doing a search and came across the following:

 

"In my experience, NotFound can be returned when you do not have permission to access the object in the Exchange store. Make sure that whatever credentials you use had full mailbox access rights to the target MB."

 

Is there any chance you hit a folder that maybe you don't have permission to access?  

 

Also, does this happen every time you run the workflow or only sometimes?  One possibility is that the message/attachment may have been moved from the time you started the query to the time it actually attempted to pull the item.

 

Finally, would you be able to update your filters to reduce the number of results being returned?  If nothing else, that might at least help you narrow down which message is causing the issue and investigate from there.

Alteryx Partner

Hi, the tool you created was great. Now I am trying to make a tool as well and I wonder what type of project you've used to create the setup for the tool? Thanks. 

I can't open it in my visual studio community version so I wonder if its supported only with enterprise version. Thanks a lot.

Bolide

Hello @ValerieCatubay,

 

I used InstallShield:

 

InstallShield Project Image.png

 

I'm using Visual Studio Professional Edition though, so I was able to get a limited edition license for free - I'm not sure if this is available in the community edition.  You may have to purchase a license.  Another option is to use a .bat file in conjunction with a PowerShell script, but I haven't had much luck getting those to work right.  You could also try packaging everything up into a .yxi file and tell you users to import it to a specific directory (note: I've not tried this with a custom C# tool and can't guarantee it would work).  Hopefully this is helpful.

Atom

Hello @rpaugh! Where exactly does the workflow (and other files) need to be saved in my machine in order to successfully setup the "Outlook Input Tool"? I'm using version 2018.1.4.44311.

Bolide

@daguer, I'm not sure I understand your question.  Are you referring to the installation workflow?  If so, you can import it anywhere, you just need to open the workflow in Alteryx.  Once you open it, it will launch a guided installer which will prompt you for an installation location for the tool itself - you can use the default or pick another location.  Hope that helps.

Asteroid

@rpaugh I am having the same issue as a lot of users.  I have tried everything.  I even tried just pulling in the Calendar and I continue to get this message, even with the incorrect email.  I do not see anyplace; in the thread were it states that this has been resolved; so I am asking if you know of a fix?  Thanks much in advance for any help you can provide.  I have been at this awhile and have searched the web for an answer.  

 

 

The error message being:

 

Error: OutlookInputTool (4): The Autodiscover service couldn't be located.
AutodiscoverLocalException
at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.InternalGetLegacyUserSettings[TSettings](String emailAddress, List`1 redirectionEmailAddresses, Int32& currentHop)
at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.GetLegacyUserSettings[TSettings](String emailAddress)
at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.InternalGetLegacyUserSettings(String emailAddress, List`1 requestedSettings)
at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.GetUserSettings(String userSmtpAddress, UserSettingName[] userSettingNames)
at Microsoft.Exchange.WebServices.Data.ExchangeService.GetAutodiscoverUrl(String emailAddress, ExchangeVersion requestedServerVersion, AutodiscoverRedirectionUrlValidationCallback validateRedirectionUrlCallback)
at Microsoft.Exchange.WebServices.Data.ExchangeService.AutodiscoverUrl(String emailAddress, AutodiscoverRedirectionUrlValidationCallback validateRedirectionUrlCallback)
at OutlookTools.OutlookEmail.GetItems(Int64 recordLimit)
at OutlookTools.OutlookInputToolEngine.PI_PushAllRecords(Int64 nRecordLimit)
at SRC.Alteryx.GenericNetPluginInterface.PI_PushAllRecords(GenericNetPluginInterface* , Int64 nRecordLimit)

Bolide

@Pepper, have you tried using a manual endpoint in the tool?  You check the "Use Manual Service URL" option and enter the path to your Exchange Server's web service (something in the format of "https://mail.domain.com/EWS/Exchange.asmx").  If this still doesn't work then you'll have to have your IT team enable auto-discover on your Exchange Server in order for the tool to find and consume its services.

Asteroid

@rpaugh, I thought I tried that, as well, it is in your articles.  I will try it out again then go to my IT team.  Thanks for your quick response!

Bolide

@Pepper, yes, examples are somewhere further up the chain.  You just need your domain + "/EWS/Exchange.asmx".  If you're using Office365 then it's just "https://outlook.office365.com/EWS/Exchange.asmx".  If it still doesn't work then you'll definitely need to contact your IT team as they've probably taken measures to secure your Exchange server by shutting off its web services.

Asteroid

@rpaugh Thanks.  This Exchange worked on.  I am not getting a new message, however, I tried on my DRAFT folder and there are no errors.  This folder only has one document in it. So I got that to work without incident.  Thanks.  Great Tool and thanks for creating and sharing with us!

Bolide

@Pepper, I'm glad you like it and always happy to help :).

Meteoroid

After testing I am wondering... does this tool work with ExchangeServer 2016 (15.1.1531.3)? I saw that the list only goes up until Exchange Server 2013. Wanted to know if anyone found a workaround. Thank you in advance. @rpaugh

Bolide

@bhattaa, It should work just fine.  The version indicates the lowest level configuration to look for, which tells the application to not look for fields that aren't available in older versions.  

Meteoroid

Understood. This is how I configured the tool. Not sure if perhaps it is a server issue.

 

@rpaughThe Error Reads: Outlook Tool Error Message: The request failed. The remote server returned an error: (407) Proxy Authentication Required. ServerRequestException at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.BuildEwsHttpWebRequest()

 

Email Issue.PNG

Bolide

@bhattaa, have you tried using the domain format for your username such as "bhattaa@<your company's domain>.com" (I'm assuming) rather than the standard "firstname.lastname@companyname.com"?  It's a subtle difference, but is a common issue.  If that still doesn't work, let me know.  There may be a small code change I need to implement.

Meteor

Hi everyone,

Did someone manage to export sub-folder names in the final output? Thanks.

Bolide

@DmtCoj, I don't believe so.  I'll make a note of it and see what I can do about including that in a future release.

Meteoroid

@rpaugh due to server regulations and the magnitude of the business, the server continues to reject this request.

 

Hoping this can be a solution we can use in the future. In the rare even that the company decides to enable us pulling from Outlook, does this tool work on the Alteryx Server? We were using RDCOM code and when running on our desktop it worked, but our server continued to reject it while on the server. Just food for thought.

Bolide

@bhattaa, I'm not that familiar with RDCOM.  How exactly are you using that, and in what context with regards to the Outlook Input tool?  

 

Yes, the tool works on Alteryx Server.  I believe several other readers of this blog have gotten that to work - it just usually involves being cautious about where you install it so that Alteryx recognizes it.

Atom

I am trying to use this tool to read emails initially from my mailbox & eventually from a public mailbox.

But when I run it I get this error:

 

Error: OutlookInputTool (1): The Autodiscover service couldn't be located.AutodiscoverLocalException at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.InternalGetLegacyUserSettings[TSettings](String emailAddress, List`1 redirectionEmailAddresses, Int32& currentHop) at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.GetLegacyUserSettings[TSettings](String emailAddress) at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.InternalGetLegacyUserSettings(String emailAddress, List`1 requestedSettings) at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.GetUserSettings(String userSmtpAddress, UserSettingName[] userSettingNames) at Microsoft.Exchange.WebServices.Data.ExchangeService.GetAutodiscoverUrl(String emailAddress, ExchangeVersion requestedServerVersion, AutodiscoverRedirectionUrlValidationCallback validateRedirectionUrlCallback) at Microsoft.Exchange.WebServices.Data.ExchangeService.AutodiscoverUrl(String emailAddress, AutodiscoverRedirectionUrlValidationCallback validateRedirectionUrlCallback) at OutlookTools.OutlookEmail.GetItems(Int64 recordLimit) at OutlookTools.OutlookInputToolEngine.PI_PushAllRecords(Int64 nRecordLimit) at SRC.Alteryx.GenericNetPluginInterface.PI_PushAllRecords(GenericNetPluginInterface* , Int64 nRecordLimit)

 

I check with out infrastructure team & they assure me that they configured Autodiscover correctly on the server.

 

Any help would be appreciated

 

Masum

Bolide

 @Masum, that is certainly strange.  If everything is configured correctly, you are able to access the service from your computer, and you have permission then everything should work.  Do you have an on-prem solution or are you using Office365?  If you're using the latter try going to https://outlook.office365.com/EWS/Exchange.asmx, log in with your credentials, and let me know what happens.  Also, if you're using Office365 you could always try manually entering the service address I just provided and see if that works.

Meteor
Hey rpaugh, I wanted to let you know how valuable this tool has been. I used this tool to go through over 4000 emails and extract a table from each email. We are able to use this data to get a very clear picture of what is going with a process that had virtually no visibility and use it for metrics on some projects. We are still looking at ways to use this tool to augment a lot of other manual processes that require combing through emails. Thanks for the tool!
Atom

@rpaugh

We are on Office 2010

Bolide

Wow, that's fantastic, @Jchantnicki.  Thank you so much for that success story!  I'm always happy to hear how people have been able to put this tool to use.

Bolide

@Masum, check with your IT team to make sure you're using the correct server address (e.g. they may have created a custom one like "yourcompany.com/ews/exchange.asmx") and credentials (e.g. "username@domain.com" format).  If/when they provide you with a server address you can try entering that in your web browser to see if you can even hit it.  If so, then the tool should work; if not, then you may be dealing with IT/security/networking issues.  Unfortunately, without knowing your infrastructure and server configurations I'm not able to provide much help beyond that since I'm just providing a client tool that consumes whatever the server provides.

Meteoroid

Hello,

 

Thank you for creating this tool. It is extremely useful and has great potential.

 

I am trying to configure the tool to work for our Outlook mailbox but am getting the error "The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel". I am not too familiar with SSL. Is this an issue with the way our mailbox is set up?

 

Thanks again.

Atom

I am tracking the time it takes to complete items on my MS Outlook Todo list.  I can extract them with your awesome Outlook tool, but I am unable to get the info in the field "actual time".  Is there a way to do this?

Bolide

Hi @thomas_wong

 

It sounds like there may be a certificate trust issues between your computer and your Exchange server, so you may have to reach out to your IT team/Exchange Admin and have them verify that your certificate is properly trusted. Have them verify that the root certificate been added to the correct certificate store (Trusted Root CA's on Local Machine).  There's a way for me to override this in the code to allow a connection, but as that creates a potential security issue I'm not comfortable doing that.

Bolide

@kcabrera, do you have an example of what you're trying to do?  Is "actual time" a calculated field, and if so what are you using to calculate it?

Atom
Sorry, the specific field I want to track is called "Actual Work". It is accessed from the Details option when viewing a task in Microsoft Outlook. I have been updating this field every time I work on a specific task, and I want to be able to retrieve all tasks that have been modified within a specific timeframe and that are in specific categories and get the actual work value for each of these tasks.


[cid:image003.jpg@01D449D9.CAC3FDC0]

Krista Cabrera
[wave]
Data & Analytics | Data Governance Office | Data Governance Process Consultant
Work: (440) 395-9637 | Cell: (216) 269-9167

If you focus on results, you will never change. If you focus on change, you will get results."
~ Jack Dixon
Bolide

@kcabrera, it looks like the Task object is similar to the Calendar object in that it has its own set of special fields in addition to those shared by other objects, which means I'll have to update the code to pull them in and handle them properly.  I'll get this incorporated into the tool and have an updated version out as soon as I can.

Bolide

@kcabrera, I've updated the tool to pull in those extra task fields and uploaded the latest version to the public gallery.  You can also download the installer executable directly from here if you're unable to open/run the workflow from the gallery since the installer workflow was built in version 2018.2.  Let me know if you have any issues with it. 

Meteor

Hello 🙂 

I was wondering is it possible to know from what sub-folder did the letter come from? 

I`m getting data from Inbox and including all sub-folders, depending on the email I heed letters from 3-7 sub-folders. 

I know I can extract each needed sub-folder separately, but, maybe there is a way to know sub-folders from extracted information? 

I looked through all "select" options and checked all the data that was extracted, but nothing similar to what I need. 

Any suggestions? 🙂 

Thank you in advance!! 

Bolide

Hi @Torao, someone else actually made that same request.  It will definitely be a code change, and I'll look into it.  I don't know yet what will be involved in getting that incorporated into the tool, but I'll be sure to let you know when I have something.

Atom

Thanks so much for updating the Outlook tool to handle the extra task fields.  My challenge now is to get my company to upgrade it's version (since my PC is prevented from downloading software).  As soon as that happens, I'll let you know if I have any issues that are NOT imposed by my companies security policies.

 

Thanks so much for the prompt update!!!!!

Alteryx Certified Partner

@DmtCoj I noticed your comment about finding the sender in a shared inbox, have you figured it out yet? @rpaugh is this possible?

I currently can't find a field that would give us this information. We've activated the 'sending on behalf of' feature in Outlook so we have the sender information in the text body, which theoretically could work. Although, it's difficult because there are usually many replies in the thread of one email.

 

Would it be possible to add this as a feature to the tool please?

 

Any help would be much appreciated, thanks again for such a great tool, it's proving to be very valuable. 

Bolide

Hi @TimothyManning,

 

I have not yet seen a way to get the original sender from a shared mailbox, but I can look into it.

Meteor

 @rpaugh, Thank you for looking into that! 🙂

It would be a great help if it would be possible to know from what sub-folder the letters come, as we use sub-folders and categories to sort the letters on daily bases 🙂 

Alteryx Certified Partner

Thanks @rpaugh for looking into it, this is what I was talking about regarding the 'send on behalf of': 

 

https://community.dynamics.com/crm/b/crmchap/archive/2016/06/26/grant-send-on-behalf-permissions-for...

 

I'm not sure if it is of any help.

Meteoroid

Hello,

 

My use case is that I want to download all the attachments in a folder to a specified folder which the tool so gracefully does. However, in my emails are small GIF images that have been copied and pasted in the signatures at the end. The image is our company logo and almost every email contains one. These images are being copied to the attachment folder and slowing down the process. Is there some way to exclude these images? Am I missing a configuration somewhere?

 

Thank you.

Bolide

Hi @thomas_wong,

 

I think I found a way to handle that, at least somewhat efficiently.  I'll get the tool updated as soon as I can.

Alteryx Partner

Hi

 

This is a great tool and there are so many uses for it.

 

Would it be possible to include the "From" field in the output (to allow replies without having to parse the MimeContent field)?

 

Thanks

 

Dave

Meteor

Hello, 

I was wondering, is there a way to download emails from more then one folder? 

In the Inbox I have 10 sub-folders, I need to get all the letters from 5 sub-folders, but extracting emails one by one takes 5 times as much time. 

Maybe there is some workaround for this? 

Thank you 🙂

Meteor

Hello @TimothyManning

Not sure if it will help you but currently we are separating based on the person's signature(each of them have unique phone number). In order to eliminate email chain problem I use formulas which are looking for the Shared Mailbox name in the "Mimecontent" and select everything until than.

 

That's the only approach what I have found so far. Hope it helps;)

Alteryx Certified Partner

Hi all, 

 

I'm trying to use the Outlook Input Tool which looks amazing! It works perfectly fine when I enter my credentials and run the workflow for the first time. However, when trying to configure the tool, I'll always get an error  that looks like this: 

image.png

Translation would be: The Value "..." is invalid for Value. Value should be between 'MinDate' and 'MaxDate'. Parametername: Value

 

I suspect there are some time and date parsing settings that are not working out. Since I'm on a german machine I tried changing my date and Time (also the format) to US Pacific Time, but that didn't work out. 

There are some suggestions about SQL Server on the internet and also it seems to be an issue that comes up during programming like here: 

https://www.codeproject.com/Questions/556350/Valueplusofplus-f-f-plus-a-a-pl

 

Do you have any idea how to solve this and use the tool?

 

Cheers

Bolide

@Benjamin_Schalk, what were the configuration options when you first added the tool and before getting the error?  Do you have a screenshot of that as well?  The tool is written in C# and uses DateTime.MinValue when no date parameter is passed, which is interpreted as "1/1/0001 12:00:00 AM".  Now, I know this value is not allowed in a SQL database, but I wouldn't think you would see this error from the tool itself.

Alteryx Certified Partner

Sure, I can (and have to) repeat it every time. I'm on Alteryx 2018.2 but I don't think that would change anything?

Nothing else is checked, i also tried different Server Versions.

 

image.png

Bolide

@Benjamin_Schalk, I fixed the bug and uploaded a new version to the public gallery.  You can also download the executable directly here.

 

@thomas_wong, this version also includes the ability to filter your attachments.  The filter just accepts plain text (no expressions or wildcards) and searches for any attachments containing the text you provide.  If you enter a file extension then it will pull all files back containing that extension.

Labels