{"id":206,"date":"2017-05-24T01:48:09","date_gmt":"2017-05-24T08:48:09","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/custom-connectors-and-text-analytics-in-powerapps-part-one\/"},"modified":"2025-06-11T08:13:47","modified_gmt":"2025-06-11T15:13:47","slug":"custom-connectors-and-text-analytics-in-powerapps-part-one","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/custom-connectors-and-text-analytics-in-powerapps-part-one\/","title":{"rendered":"Using the Cognitive Services Text Analytics API in PowerApps"},"content":{"rendered":"<p>This post shows you how to build a basic app that uses the <a name=\"_Hlk482795823\"><\/a><a href=\"https:\/\/docs.microsoft.com\/azure\/cognitive-services\/text-analytics\/overview\">Microsoft Cognitive Services Text Analytics API<\/a>. We&#8217;ll show you how to set up the Text Analytics API, and connect to it with the <a href=\"https:\/\/docs.microsoft.com\/connectors\/cognitiveservicestextanalytics\/\">Text Analytics connector<\/a>. Then we&#8217;ll show you how to create an app that calls the API.<\/p>\n<h2>Introduction to Microsoft Cognitive Services<\/h2>\n<p>Microsoft Cognitive Services are a set of APIs, SDKs, and services available to make your applications more intelligent, engaging, and discoverable. These services enable you to easily add intelligent features \u2013 such as emotion and video detection; facial, speech and vision recognition; and speech and language understanding \u2013 into your applications.<\/p>\n<p>We\u2019ll focus on &#8220;language understanding&#8221; for the rest of this post, working with the Text Analytics API. This API enables you to detect sentiment, key phrases, topics, and language from your text. Let&#8217;s get started by trying out a demo of the API, then signing up for a preview version.<\/p>\n<h3>Try out the Text Analytics API<\/h3>\n<p>The API has an online demo \u2013 you can see how it works, and look at the JSON that the service returns.<\/p>\n<p>1. Go to the <a href=\"https:\/\/azure.microsoft.com\/services\/cognitive-services\/text-analytics\/\">Text Analytics API<\/a> page.<\/p>\n<p>2. In the <b>See it in action<\/b> section, use the example text, or enter your own text. Then click <b>Analyze<\/b>.<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/c50537c3-f70d-42b2-bd37-d14ea1bc957b.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image002[1]\" border=\"0\" height=\"300\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/c50537c3-f70d-42b2-bd37-d14ea1bc957b.png\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" title=\"clip_image002[1]\" width=\"628\"\/><\/a><\/p>\n<p>3. The page shows formatted results on the <b>Analyzed text<\/b> tab, and the JSON response on the <b>JSON<\/b> tab.<\/p>\n<h3>Sign up for the Text Analytics API<\/h3>\n<p>The API is available as a free preview, and it is associated with an Azure subscription. You manage the API through the Azure portal.<\/p>\n<p>1. If you don\u2019t already have an Azure subscription, <a href=\"https:\/\/azure.microsoft.com\/free\/\">sign up for a free subscription<\/a>.<\/p>\n<p>2. Sign in to your Azure account.<\/p>\n<p>3. Go to the <a href=\"https:\/\/go.microsoft.com\/fwlink\/?LinkId=761108\">Create Cognitive Services blade<\/a> in the Azure portal.<\/p>\n<p>4. Enter information for the Text Analytics API, like in the following image. Select the <b>F0<\/b> (free) pricing tier.<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/9facb0d0-52a8-4765-ae36-ec0f1721364c.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image003[1]\" border=\"0\" height=\"407\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/9facb0d0-52a8-4765-ae36-ec0f1721364c.png\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" title=\"clip_image003[1]\" width=\"256\"\/><\/a><\/p>\n<p>5. In the lower-left corner, click <b>Create<\/b>.<\/p>\n<p>6. On the <b>Dashboard<\/b>, click the API that you just created.<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/b0755521-b22e-48c7-a701-9af4cbe4e485.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image004[1]\" border=\"0\" height=\"94\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/b0755521-b22e-48c7-a701-9af4cbe4e485.png\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" title=\"clip_image004[1]\" width=\"142\"\/><\/a><\/p>\n<p>7. Click <b>Keys<\/b>.<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/291b52c9-058c-464d-9124-e968f2cc23a6.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image005[1]\" border=\"0\" height=\"273\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/291b52c9-058c-464d-9124-e968f2cc23a6.png\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" title=\"clip_image005[1]\" width=\"218\"\/><\/a><\/p>\n<p>8. Copy one of the keys on the right of the screen. We will use this key later when we create a connection to the API.<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/8107ac8f-2ed2-4eb5-9d40-41571ad428de.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image006[1]\" border=\"0\" height=\"145\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/8107ac8f-2ed2-4eb5-9d40-41571ad428de.png\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" title=\"clip_image006[1]\" width=\"222\"\/><\/a><\/p>\n<h2>Build the app<\/h2>\n<p>Now that we have the Text Analytics API up and running, we can connect to it from PowerApps, and build an app that calls the API. This is a single screen app that provides functionality similar to the demo on the Text Analytics API page. <a href=\"https:\/\/1drv.ms\/u\/s!AsOV4C3Ue18SgdxcBxEcOagHzfv-2A\">Download the completed app<\/a>, or get started on building it.<\/p>\n<h3>Create the app and add a connection<\/h3>\n<p>First, we&#8217;ll create a blank phone app and add a connection with the <b>Text Analytics<\/b> connector. If you need more information about these tasks, see <a href=\"https:\/\/powerapps.microsoft.com\/tutorials\/get-started-create-from-blank\">Create an app from scratch<\/a> and <a href=\"https:\/\/powerapps.microsoft.com\/tutorials\/add-manage-connections\/\">Manage your connections in PowerApps<\/a>.<\/p>\n<p>1. In PowerApps Studio, click <b>File<\/b> &gt; <b>New<\/b>, then under <b>Blank app<\/b>, click <b>Phone layout<\/b>.<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/980375da-f341-4fb6-bfcc-f5d86b1c9a5f.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image007[1]\" border=\"0\" height=\"273\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/980375da-f341-4fb6-bfcc-f5d86b1c9a5f.png\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" title=\"clip_image007[1]\" width=\"185\"\/><\/a><\/p>\n<p>2. In the middle pane, click <b>connect to data<\/b>.<\/p>\n<p>3. In the right pane, click <b>New connection<\/b> &gt; <b>Text Analytics<\/b>.<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/efa050c2-8558-4464-b7d4-0deb8804f9d9.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image008[1]\" border=\"0\" height=\"251\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/efa050c2-8558-4464-b7d4-0deb8804f9d9.png\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" title=\"clip_image008[1]\" width=\"184\"\/><\/a><\/p>\n<p>4. Copy your key into <b>Account Key<\/b>, then click <b>Create<\/b>.<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/b841efc9-d2e4-450b-bd29-f1e58030dda9.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image009[1]\" border=\"0\" height=\"346\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/b841efc9-d2e4-450b-bd29-f1e58030dda9.png\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" title=\"clip_image009[1]\" width=\"246\"\/><\/a><\/p>\n<h5>Add controls<\/h5>\n<p>The next step in creating the app is to add all the controls. Normally when I build apps, I add formulas to the controls as I go, but in this case I&#8217;ll focus on the controls first, then add a few formulas in the next section. The following image shows the app with all the controls.<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/da1d0689-84d0-4942-a7fb-9ef586a16799.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image010[1]\" border=\"0\" height=\"642\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/da1d0689-84d0-4942-a7fb-9ef586a16799.png\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" title=\"clip_image010[1]\" width=\"364\"\/><\/a><\/p>\n<p>Follow the steps below to create this screen. If a control name is specified, that name is used in a formula in the next section.<\/p>\n<p>1. Add a <b>Rectangle<\/b> control (under <b>Insert<\/b> &gt; <b>Icons<\/b>) as a background for the title, then add a <b>Label<\/b> control for the title. Add another <b>Label<\/b> control for the introductory text.<\/p>\n<p>2. Add a <b>Text input<\/b> control, so we can enter text to analyze. Name the control <b>tiTextToAnalyze<\/b>. The app should now look like the following image.<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/18706832-8b55-4b76-aad1-63bbd3ad98db.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image011[1]\" border=\"0\" height=\"298\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/18706832-8b55-4b76-aad1-63bbd3ad98db.png\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" title=\"clip_image011[1]\" width=\"364\"\/><\/a><\/p>\n<p>3. Add three <b>Check box<\/b> controls, so we can choose which API operations to perform. Name the controls <b>chkLanguage<\/b>, <b>chkPhrases<\/b>, and <b>chkSentiment<\/b>.<\/p>\n<p>4. Add a button, so we can call the API after selecting which operations to perform. The app should now look like the following image.<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a32d6452-530c-4709-acdd-4eabab790197.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image012[1]\" border=\"0\" height=\"377\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a32d6452-530c-4709-acdd-4eabab790197.png\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" title=\"clip_image012[1]\" width=\"364\"\/><\/a><\/p>\n<p>5. Add three <b>Label<\/b> controls. The first two will hold results from the language and sentiment API calls; the third is just an introduction for the gallery at the bottom of the screen.<\/p>\n<p>6. Add a <b>Blank vertical gallery<\/b> control, then add a <b>Label<\/b> control to the gallery. The gallery will hold results from the key phrases API call. The app should now look like the following image.<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a3e50e49-1af7-4063-a4a8-f03f0a98a2e3.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image013[1]\" border=\"0\" height=\"642\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a3e50e49-1af7-4063-a4a8-f03f0a98a2e3.png\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" title=\"clip_image013[1]\" width=\"364\"\/><\/a><\/p>\n<p>We&#8217;re keeping this app simple to focus on calling the Text Analytics API, but you could add things \u2013 like logic to show and hide controls based on the check boxes selected, error handling if the user doesn&#8217;t select any options, and so on.<\/p>\n<h3>Add formulas<\/h3>\n<p>OK, we have a nice-looking app, but it doesn&#8217;t do anything yet. We&#8217;ll fix that now. But before we dive into the details, let&#8217;s understand the pattern that the app follows:<\/p>\n<p>1. The app makes specific API calls based on the checkboxes selected in the app. When we click <b>Analyze text<\/b>, the app makes 1, 2, or 3 API calls.<\/p>\n<p>2. Data that the API returns is stored in three different <i><a href=\"https:\/\/powerapps.microsoft.com\/tutorials\/create-update-collection\/\">collections<\/a><\/i>: <b>languageCollect<\/b>, <b>sentimentCollect<\/b>, and <b>phrasesCollect<\/b>.<\/p>\n<p>3. The <b>Text<\/b> property for two of the labels, and the <b>Items<\/b> property for the gallery, are updated based on what&#8217;s in the three collections.<\/p>\n<p>With that background, let\u2019s add the formula for the <b>OnSelect<\/b> property of our button. This is where all the magic happens.<\/p>\n<p style=\"margin-left: 40px;\"><code>If(chkLanguage.Value=true,<\/code><\/p>\n<p style=\"margin-left: 40px;\"><code>ClearCollect(languageCollect, TextAnalytics.DetectLanguage({numberOfLanguagesToDetect:1, text:tiTextToAnalyze.Text}).detectedLanguages.name)<\/code><\/p>\n<p style=\"margin-left: 40px;\"><code>);<\/code><\/p>\n<p style=\"margin-left: 40px;\"><code>If(chkPhrases.Value=true,<\/code><\/p>\n<p style=\"margin-left: 40px;\"><code>ClearCollect(phrasesCollect, TextAnalytics.KeyPhrases({language:\"en\", text:tiTextToAnalyze.Text}).keyPhrases)<\/code><\/p>\n<p style=\"margin-left: 40px;\"><code>);<\/code><\/p>\n<p style=\"margin-left: 40px;\"><code>If(chkSentiment.Value=true,<\/code><\/p>\n<p style=\"margin-left: 40px;\"><code>ClearCollect(sentimentCollect, TextAnalytics.DetectSentiment({language:\"en\", text:tiTextToAnalyze.Text}).score)<\/code><\/p>\n<p style=\"margin-left: 40px;\"><code>)<\/code><\/p>\n<p>There&#8217;s a bit going on here, so let&#8217;s break it down:<\/p>\n<ul>\n<li>The <b>If<\/b> statements are straightforward \u2013 if a specific check box is selected, make the API call for that operation.\n<ul>\n<li>Within each call, specify the appropriate parameters:<\/li>\n<li>In all three calls, we specify <b>tiTextToAnalyze.Text<\/b> as the input <b>text<\/b>.<\/li>\n<li>In <b>DetectLanguage()<\/b>, we hard-code <b>numberOfLanguagesToDetect<\/b> as 1, but we could pass this parameter based on some logic in the app.<\/li>\n<li>In <b>KeyPhrases()<\/b> and <b>DetectSentiment()<\/b>, we hard-code language as &#8220;en&#8221;, but we could pass this parameter based on some logic in the app. For example, we could detect the language first, then set this parameter based on what <b>DetectLanguage()<\/b> returns.<\/li>\n<\/ul>\n<\/li>\n<li>For each call that is made, add the results to the appropriate collection:\n<ul>\n<li>For <b>languageCollect<\/b>, we add the <b>name<\/b> of the language that was identified in the text.<\/li>\n<li>For <b>phrasesCollect<\/b>, we add the <b>keyPhrases<\/b> that were identified in the text.<\/li>\n<li>For <b>sentimentCollect<\/b>, we add the sentiment <b>score<\/b> for the text, which is a value of 0-1, with 1 being 100% positive.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Now that we have the API calls, let&#8217;s move on to displaying results. To display the results of the API calls, reference the appropriate collection in each control:<\/p>\n<ul>\n<li>Set the <b>Text<\/b> property of the language label to:<\/li>\n<\/ul>\n<blockquote>\n<p style=\"margin-left: 40px;\"><code>\"The language detected is \" &amp; First(languageCollect).name<\/code><\/p>\n<p style=\"margin-left: 40px;\">The <b>First()<\/b> function returns the first (and in this case only) record in <b>languageCollect<\/b>, and we display the <b>name<\/b> (the only field) associated with that record.<\/p>\n<\/blockquote>\n<ul>\n<li>Set the <b>Text<\/b> property of the sentiment label to:<\/li>\n<\/ul>\n<blockquote>\n<p style=\"margin-left: 40px;\"><code>\"The sentiment score is \" &amp; Round(First(sentimentCollect.Value).Value, 3)*100 &amp; \"% positive\"<\/code><\/p>\n<p style=\"margin-left: 40px;\">This formula also uses the <b>First()<\/b> function, gets the <b>Value<\/b> (0-1) from the first and only record, then formats it as a percentage.<\/p>\n<\/blockquote>\n<ul>\n<li>Set the <b>Items<\/b> property of the key phrases gallery to:<\/li>\n<\/ul>\n<blockquote>\n<p style=\"margin-left: 40px;\"><code>phrasesCollect<\/code><\/p>\n<\/blockquote>\n<p style=\"margin-left: 40px;\">We&#8217;re now working with a gallery so we don\u2019t need the <b>First()<\/b> function to extract a single value. We reference the collection, and the gallery displays the key phrases as a list.<\/p>\n<h3>Run the app<\/h3>\n<p>Now that the app is finished, let&#8217;s run it to see how it works. In the following image, all three options are selected, and the text is the same as the default text on the Text Analytics API page.<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/753c7981-a65a-46c5-92c4-6693b43f17a3.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image014[1]\" border=\"0\" height=\"642\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/753c7981-a65a-46c5-92c4-6693b43f17a3.png\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" title=\"clip_image014[1]\" width=\"364\"\/><\/a><\/p>\n<p>You can compare this to the Text Analytics API page, and see that we get the same results.<\/p>\n<h2>Summary<\/h2>\n<p>We hope you now understand a little more about the Text Analytics API, and you&#8217;ve enjoyed seeing how to incorporate it into an app. Let us know if there are other Cognitive Services (or other services in general) that you would like us to focus on in our posts. As always, please leave feedback and any questions in the comments.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post focuses on building a basic app that uses the Microsoft Cognitive Services Text Analytics API.<\/p>\n","protected":false},"author":141,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ms_queue_id":[],"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","_alt_title":"","ms-ems-related-posts":[],"footnotes":""},"audience":[3378],"content-type":[3423],"job-role":[],"product":[3473],"property":[],"topic":[3421],"coauthors":[2113],"class_list":["post-206","post","type-post","status-publish","format-standard","hentry","audience-it-professional","content-type-tips-and-guides","product-power-apps","topic-application-modernization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Using the Cognitive Services Text Analytics API in PowerApps - Microsoft Power Platform Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using the Cognitive Services Text Analytics API in PowerApps - Microsoft Power Platform Blog\" \/>\n<meta property=\"og:description\" content=\"This post focuses on building a basic app that uses the Microsoft Cognitive Services Text Analytics API.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/custom-connectors-and-text-analytics-in-powerapps-part-one\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Power Platform Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-24T08:48:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-11T15:13:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/c50537c3-f70d-42b2-bd37-d14ea1bc957b.png\" \/>\n<meta name=\"author\" content=\"Michael Blythe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michael Blythe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/\"},\"author\":[{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/author\/michael-blythe\/\",\"@type\":\"Person\",\"@name\":\"Michael Blythe\"}],\"headline\":\"Using the Cognitive Services Text Analytics API in PowerApps\",\"datePublished\":\"2017-05-24T08:48:09+00:00\",\"dateModified\":\"2025-06-11T15:13:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/\"},\"wordCount\":1356,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/c50537c3-f70d-42b2-bd37-d14ea1bc957b.png\",\"keywords\":[\"Formulas\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/\",\"name\":\"Using the Cognitive Services Text Analytics API in PowerApps - Microsoft Power Platform Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/c50537c3-f70d-42b2-bd37-d14ea1bc957b.png\",\"datePublished\":\"2017-05-24T08:48:09+00:00\",\"dateModified\":\"2025-06-11T15:13:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#primaryimage\",\"url\":\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/c50537c3-f70d-42b2-bd37-d14ea1bc957b.png\",\"contentUrl\":\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/c50537c3-f70d-42b2-bd37-d14ea1bc957b.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using the Cognitive Services Text Analytics API in PowerApps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#website\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/\",\"name\":\"Microsoft Power Platform Blog\",\"description\":\"Innovate with Business Apps\",\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization\",\"name\":\"Microsoft Power Platform Blog\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png\",\"width\":194,\"height\":145,\"caption\":\"Microsoft Power Platform Blog\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/person\/28f169c029d7649dd38d68ab34c1afb9\",\"name\":\"Michael Blythe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/5c8d5577331fae92dcba533f60f7118161feeba4bfa2f4ccb7037293ac1b95be?s=96&d=mm&r=g2a2e6667523437a3bd97ccd4be578d82\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5c8d5577331fae92dcba533f60f7118161feeba4bfa2f4ccb7037293ac1b95be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5c8d5577331fae92dcba533f60f7118161feeba4bfa2f4ccb7037293ac1b95be?s=96&d=mm&r=g\",\"caption\":\"Michael Blythe\"},\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/author\/mblythe\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using the Cognitive Services Text Analytics API in PowerApps - Microsoft Power Platform Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/","og_locale":"en_US","og_type":"article","og_title":"Using the Cognitive Services Text Analytics API in PowerApps - Microsoft Power Platform Blog","og_description":"This post focuses on building a basic app that uses the Microsoft Cognitive Services Text Analytics API.","og_url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/custom-connectors-and-text-analytics-in-powerapps-part-one\/","og_site_name":"Microsoft Power Platform Blog","article_published_time":"2017-05-24T08:48:09+00:00","article_modified_time":"2025-06-11T15:13:47+00:00","og_image":[{"url":"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/c50537c3-f70d-42b2-bd37-d14ea1bc957b.png","type":"","width":"","height":""}],"author":"Michael Blythe","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Michael Blythe","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/author\/michael-blythe\/","@type":"Person","@name":"Michael Blythe"}],"headline":"Using the Cognitive Services Text Analytics API in PowerApps","datePublished":"2017-05-24T08:48:09+00:00","dateModified":"2025-06-11T15:13:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/"},"wordCount":1356,"commentCount":0,"publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#primaryimage"},"thumbnailUrl":"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/c50537c3-f70d-42b2-bd37-d14ea1bc957b.png","keywords":["Formulas"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/","name":"Using the Cognitive Services Text Analytics API in PowerApps - Microsoft Power Platform Blog","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#primaryimage"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#primaryimage"},"thumbnailUrl":"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/c50537c3-f70d-42b2-bd37-d14ea1bc957b.png","datePublished":"2017-05-24T08:48:09+00:00","dateModified":"2025-06-11T15:13:47+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#primaryimage","url":"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/c50537c3-f70d-42b2-bd37-d14ea1bc957b.png","contentUrl":"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/c50537c3-f70d-42b2-bd37-d14ea1bc957b.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2017\/05\/24\/custom-connectors-and-text-analytics-in-powerapps-part-one\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/"},{"@type":"ListItem","position":2,"name":"Using the Cognitive Services Text Analytics API in PowerApps"}]},{"@type":"WebSite","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#website","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/","name":"Microsoft Power Platform Blog","description":"Innovate with Business Apps","publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization","name":"Microsoft Power Platform Blog","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png","width":194,"height":145,"caption":"Microsoft Power Platform Blog"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/person\/28f169c029d7649dd38d68ab34c1afb9","name":"Michael Blythe","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5c8d5577331fae92dcba533f60f7118161feeba4bfa2f4ccb7037293ac1b95be?s=96&d=mm&r=g2a2e6667523437a3bd97ccd4be578d82","url":"https:\/\/secure.gravatar.com\/avatar\/5c8d5577331fae92dcba533f60f7118161feeba4bfa2f4ccb7037293ac1b95be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c8d5577331fae92dcba533f60f7118161feeba4bfa2f4ccb7037293ac1b95be?s=96&d=mm&r=g","caption":"Michael Blythe"},"url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/author\/mblythe\/"}]}},"bloginabox_animated_featured_image":null,"bloginabox_display_generated_audio":false,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Power Platform Blog","distributor_original_site_url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/users\/141"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/comments?post=206"}],"version-history":[{"count":1,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/206\/revisions"}],"predecessor-version":[{"id":131264,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/206\/revisions\/131264"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/media?parent=206"}],"wp:term":[{"taxonomy":"audience","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/audience?post=206"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/content-type?post=206"},{"taxonomy":"job-role","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/job-role?post=206"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/product?post=206"},{"taxonomy":"property","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/property?post=206"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/topic?post=206"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/coauthors?post=206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}