Hi,
We use Microsoft Forms heavily for internal processes. I'm trying to create an App using power apps to have all the forms in one place. I've tried using the "launch" function, but that opens the webpage and takes you out of the app. Would be good if the form just loaded within the app. I've tried "Forms Pro survey", but thats depricated.
Is there any other way of doing this?
Thanks!
To the best of my knowledge there is no way to host an MS Form inside a Power App.
I think it might be possible.
It may be possible to do this using custom code components. If I have time I might prepare you an example how to set this up specifically for a Microsoft Forms form embedded in a Canvas App.
If you want to try to figure out how to set it up yourself right now in the meantime, please try these as starting point yourself:
Implementing a IFRAME component - docs.micrsosoft.com
https://docs.microsoft.com/en-us/power-platform/alm/component-framework
May not be exactly what you need but may help you with ideas. I have made a video that shows how to capture MS Forms results into a Power App (Using in Power Automate). Creating a Complaints DB with MS Forms, Model Driven Power Apps (Dataverse) and Power Automate - You...
--------------------------------------------------
Please Accept as Solution if it solves your question. Or just give it a Thumbs Up if it is helpful as can help others.
Subscribe: https://www.youtube.com/channel/UCFpvUlpx84FuIPOdInGKMTw
Twitter: https://twitter.com/assist_365
Regards
Darren Lutchner - 365 Assist
Try it like this:
(please note, unfortunately, even this solution does not actually put the form in the Canvas App when I tried it in the web browser - it only puts a link to the form kind of just like Launch.
I did not try and see what it looks like on an iOS device - there is some possibility it works there but I do not know for sure.
In case it helps as a general starting point I provide it anyway just in case)
1. Follow all steps at Enable the Power Apps component framework feature - docs.microsoft.com
2. Download PowerApps Samples from GitHub here:
https://github.com/microsoft/PowerApps-Samples
3. Download Visual Studio Code here:
https://code.visualstudio.com/download
4. Install Visual Studio Extension Power Platform Tools for Visual Studio Code
Using Power Platform Tools for Visual Studio Code - docs.microsoft.com
5. In Visual Studio Code go to Terminal -> New Terminal
6. Extract the Power Apps Samples to C drive, and follow all these steps here issuing commands to the terminal as follows:
and then
If you receive an error in MSBuild, it must be added to the path environment variables first before continuing. After doing it, use the command
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
to reload the environment variables in this PowerShell session right after adding the correct MSBuild.exe containing directory to the PATH environment variable.
If you get any error saying you need to get the developer pack for the .net version, you should follow what it says and install the required developer pack version, then retry the command again after the successful installation of the developer pack.
Note also that for this build to work successfully, your running MSBuild.exe process will require access to the internet while it is run, to process NuGet dependencies. You may need to allow it access for it through firewall, if it is currently being blocked by firewall.
7. Now run the following command
msbuild
8. If there is any issue, try with this command instead of just /t:restore:
msbuild /t:rebuild /restore
(note, you may prefer to replace
msbuild /t:rebuild /restore
above, with
msbuild /t:rebuild /restore /p:Configuration=Release
as it may create a more optimized version of the component)
Note: The release one also is different in the kind of solution it creates. The Release mode creates a managed solution, as opposed to an unmananaged solution.
9. If there is still an issue, make sure you have latest node.js LTS version installed
https://nodejs.org/en/download/
Then try step 8 again.
10. If there is still an issue, try installing the Power Platform CLI tools (not the VSIX extension) here:
Power Platform CLI for Windows - docs.microsoft.com
then try Step 8 again
11. If there is still an issue, try running
npm install
Make sure the running node.exe process has access to the internet for this to succeed.
Then retry step 8 again after that.
12. Take the generated Zip file under bin/debug or bin/release and import it into Dataverse Environment that the Canvas App is in.
For more guidance how to import a solution, check here:
Import a Solution - docs.microsoft.com
13. Go to Canvas App in Power Apps Studio, and go to Insert -> Components, then More Components. There should be two tabs under Import components - Canvas and Code. Click on the Code tab, since it is a Code Component. If it is not showing, click on Refresh button inside the tab. If this does not work, then close and open Power Apps Studio again and it should show up.
The Iframe component should be available to add here.
If it is not, click on the Refresh button in the Code tab until it shows up. Then click on it and click Import.
For more guidance on this step, check here:
Add Components to a Canvas App - docs.microsoft.com
14. Simply put the Microsoft Forms form URL in the component for stringProperty, resize the component to your desired size, and there you have it! You have an embedded Microsoft Forms form directly in the Canvas App!
15. Well... not exactly. So this Microsoft sample component is apparently just a Bing map component. You would change the latitude and longitude and it shows only bing map component.
Let's do a very quick repurposing of this same iframe component for Microsoft Office Forms.
To do so, edit the index.ts file, change the lines around 73 to 74 or so to:
const bingMapUrlPrefix = "https://forms.office.com/Pages/ResponsePage.aspx?id=";
const bingMapUrlPostfix = "&fromComponent=PowerActivatePCFSample";
Also change iFrameSrc to something like this:
const iFramesrc=`${bingMapUrlPrefix + stringProperty + bingMapUrlPostfix}`;
Also add this line above the line starting with const latitude:
const stringProp = context.parameters.stringProperty.raw;
Also change method signature of
private updateBingMapURL(latitude: number, longitude: number): void {
to
private updateBingMapURL(stringProperty: string | null): void {
change the line starting with latitude && longitude &&
to
latitude && longitude && this.updateBingMapURL(stringProp);
16. Now save the file.
17. Now repeat Steps 8-11.
18. Remove the previously imported iframe component from dataverse. If it was not built in release mode, it might be an unmanaged solution when you imported it, in that case deleting the solution will not do it, you should go in the solution and delete the component itself and select "Delete from this environment".
And now, proceed with steps 12-14.
19. See if it works now.
20. If it is still using the previous Bing Map version of the component rather than your edited component no matter what you attempt, then try creating a new Canvas App, reimporting the component, then adding the component to a Screen, then trying to add the Forms form id as stringProperty. and seeing if this works better.
For more guidance on updating the code component on an existing PowerApp without having to make a new app, which includes making sure it has a different manifest file version property value prior to the rebuild, reimporting the solution, and making sure to publish all customizations, close and reopen the app in Power Apps Studio and seeing that it ask you to update the code components, check here:
Update Existing Code Components - docs.microsoft.com
Try changing the LatitudeValue and LongitudeValue to something random as well each time and see if the component updates more quickly with your new values.
21. It worked for me, but even after trying all this, I get a button saying "Fill out the form" with a link to the form (the link works correctly and uses the survey id populated for stringProperty), instead of the actual form itself in the Canvas app.
(I did not try it on an iOS device - it's possible this way might work on an iOS device from the PowerApps mobile app on the iOS device where it shows it embedded, but I'm not sure if that is the case as I did not try it on an iOS device).
While it may still be possible to do this in some way with Power Apps Component Framework, it may not be possible to do it with just an IFrame and for it to be embedded fully without having to click the link.
Instead, a more customized Power Apps Component, or perhaps even another kind of approach altogether, may be needed here.
In case all of the above helps as a starting point, I provide it here in case. If I consider an alternate solution to this, I might provide it later on.
Thanks for this! I'll try this and see how it goes.
I think iframe is the best option at the moment. I can get the iframe code from the Microsoft Form, and will then try to embed it using the steps you provided.
Will let you know how it goes!
I've followed your steps until step 8.
Didn't work, so I did 9 and 10 as well, and retried. Still no luck.
How do I install npm? I've done it via command line, but I think it isn't getting recognized within Visual Studio Code.
After making changes that change the system environment PATH variables, including installation of node.js itself, you either need to reboot the computer, or instead, you can keep the same PowerShell session and just issue this command in the shell:
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
After that try and see if npm exists after that.
Check if it helps @varunnair91
I will note @varunnair91 some issues you might run into even if you can get all those steps to work:
1. In the end, it might still prompt to click a link, even after all my steps.
Something interesting to note, is that before the Forms Pro Survey input was deprecated and was still in preview, it may have been doing the same thing according to discussions like: Embedding Forms in PowerApp
According to that discussion, and according to a screenshot someone provided in that discussion, the now deprecated control would show a screen almost identical to what my modified Iframe control shows on web - just an embed of the Forms logo and a call to action link to click on to open the form in a separate window.
Also, according to that discussion (but I did not test it), iOS devices would show the form inside the app, but other devices like Android or web would show the exact same prompt to click the link. It seems like the solution that person went with at the time, as you could see from the discussion, was to use only iOS devices.
That possibly indicates that my steps, if completed, might end up with a successfully embedded form on iOS devices, as we are essentially almost attempting to recreate the deprecated control by ourselves here with these steps. I did not test it, so this may not be true. If I ever do test it I might let you know.
I'll need to note that although I am not so familiar how the deprecated control worked, it's possible it worked differently than my modified Bing Frame custom control would work. There is no guarantee that the steps I provided would lead to the form being embedded even on iOS devices. There may have also been further changes to Forms ever since 2019 when the discussion took place. The only way to know if it works even on iOS devices, is to test it on an iOS device and in a similar way as done in the discussion.
I don't know if the deprecated control still even works anymore, but if it still does, the deprecated control could be put on the page to compare with the iframe control.
If I have some time, I might check into this more, and see if I could provide you with some more detail on a complete solution with either more detail on this approach that leads to successful embedding, and/or other approaches if applicable.
2. Because of #1 above and depending on your use case, then unfortunately it may be easier to just use Launch unless I could look into it and provide you with more detail on making this really work or an alternative, better way to do it.
@varunnair91 I have been thinking about the issue you brought up as I find it possibly useful for something I may need as well, so I might continue to check into it and let you know if I have some time as I find what you brought up interesting.
Hello I have an update on this and great news for you - I actually got this to work successfully!
A Microsoft Forms Form can be embedded directly into a Canvas App using this Custom Component!
After I tested it more,
Microsoft Forms shows the link when the Iframe embed is less than exactly 320px x 320px.
In the first version I gave, I did not customize the component's CSS, and the size was smaller than this.
So that is why I got the prompt saying to click to open.
That is shown when the Iframe is smaller than 320px x 320px.
When the size is 320px x 320px or bigger, the component works.
In IFrameControl/css/IFrameControl.css
/*//need to be at least 320px by 320px*/
.SampleNamespace\.IFrameControl .SampleControl_IFrame
{
width:100%;
min-width: 320px;
min-height: 320px;
}
When I customize the size, it works and the Iframe shows the actual Microsoft Forms form inside!
Not only that, but I tested in the Canvas App in the browser in Preview mode and in Publish + actual Play mode - and it really worked! I was able to interact with the survey, and submit a response directly from the Canvas App!
There are probably some improvements that can be made to this Component, but hopefully you will find it useful even as it is now!
Please note I only tested it in the Chrome browser. I did not test my solution on any mobile devices. I suspect this solution should work properly on both the iOS and the Android Power Apps mobile apps, but please note, I did not test this on mobile, so the only way to be sure, is to make sure to test it first and see if it really works.
In case you want to skip the really complicated development steps i gave in my post, you may find attached sol.zip and take a huge shortcut.
Just do Step 1 (required)
1. Follow all steps at Enable the Power Apps component framework feature - docs.microsoft.com
then skip all the other steps, doing only the steps 12, 13, and 14
12.
Take the generated Zip file under bin/debug or bin/release and import it into Dataverse Environment that the Canvas App is in.Download sol.zip attached to this post (at bottom of this post) and import it into Dataverse Environment that the Canvas App is in. The solution should import in as a managed solution.
For more guidance how to import a solution, check here:
Import a Solution - docs.microsoft.com
13. Go to Canvas App in Power Apps Studio, and go to Insert -> Components, then More Components. There should be two tabs under Import components - Canvas and Code. Click on the Code tab, since it is a Code Component. If it is not showing, click on Refresh button inside the tab. If this does not work, then close and open Power Apps Studio again and it should show up.
The Iframe component should be available to add here.
If it is not, click on the Refresh button in the Code tab until it shows up. Then click on it and click Import.
The Solution may still be taking time to import, so you may need to click Refresh a few times after each 10-20 seconds if it is still not there.
For more guidance on this step, check here:
Add Components to a Canvas App - docs.microsoft.com
14. Simply put the Microsoft Forms form URL in the component for stringProperty, resize the component to your desired size, and there you have it! You have an embedded Microsoft Forms form directly in the Canvas App!
For example,
my full form URL:
you would use for stringProperty the following value:
_lF6el5U5EKny6h5f6PkAc5BBzhkjZBCor-F8FG6oe1UMFJEUUpITVNVV0JTM1Y4QjYxQkhGV05PRS4u
(also see if changing the latitude/longitude repeatedly helps make it show up faster)
In case you still really want to follow those steps to build the Component yourself, and in case you want to try and modify it further yourself, etc. then you can find the source code of my modified component here to use as a guide along with the complete steps I gave initially:
https://github.com/poweractivate/FormsIFrameControl
Instead of looking for and modifying the lines of code manually as given in Step 15 initially, just use the source code from this repo instead. However, you will need to perform all the other steps, which are substantially more difficult than if you just use the sol.zip file I provided in this post (it is at the bottom of the post).
@varunnair91 hopefully you are pleased to check out this potential working option you can consider, to do something that, I also for a split second at first glance though there was 'no way' to do - to embed a Microsoft Forms Form directly inside a Canvas App!
Check if it helps @varunnair91
Please make a note of two things:
1. I intentionally made this Component somewhat difficult to change the stringProperty of the Component. This is because by default, the Component would reload the form every single time it was moved, resized, etc. This could cause some problems as it could load the same form multiple times in very rapid succession. So I have it specifically only check for updated value when you update either the Longitude or the Latitude (one of the two numeric fields) to make this happen much, much less often - so it will no longer try to reload anything if it is moved, resized, etc. However, as a consequence, you will not see the Component update when you put your Form ID into the stringProperty. You'll need to
2. The width auto-fits the Component - but right now, the height does not auto fit and stays at 320px. Hopefully it is useful to you even like this. As a quick fallback, you can use alternate version attached sol2.zip, where I have set the height at 800px if you prefer it bigger for the moment. I might make an update if I have time where the height will fit the component height, and if applicable any other possible improvements but for now, height is fixed at 320px, and only the width auto fits the Component width.
For those who are still looking, check this solution: https://pcf.gallery/responsive-iframe-pcf-control/
Dear Community Members, We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd. During this period, members will not be able to Kudo, Comment, or Reply to any posts. On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities. What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!
We are excited to announce the Summer of Solutions Challenge! This challenge is kicking off on Monday, June 17th and will run for (4) weeks. The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions in the Forums to as many questions as you can. Answers can be provided in all the communities. Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”) - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024 Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods. You must enter into each weekly Entry Period separately. How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different. Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers. At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing. Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner. A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random. Individuals will be contacted before the announcement with the opportunity to claim or deny the prize. Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners. Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event. ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE** Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersNumber of SolutionsSuper UsersNumber of Solutions @anandm08 23 @WarrenBelz 31 @DBO_DV 10 @Amik 19 AmínAA 6 @mmbr1606 12 @rzuber 4 @happyume 7 @Giraldoj 3@ANB 6 (tie) @SpongYe 6 (tie) Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersSolutionsSuper UsersSolutions @anandm08 10@WarrenBelz 25 @DBO_DV 6@mmbr1606 14 @AmínAA 4 @Amik 12 @royg 3 @ANB 10 @AllanDeCastro 2 @SunilPashikanti 5 @Michaelfp 2 @FLMike 5 @eduardo_izzo 2 Meekou 2 @rzuber 2 @Velegandla 2 @PowerPlatform-P 2 @Micaiah 2 Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 3:Community MembersSolutionsSuper UsersSolutionsPower Apps anandm0861WarrenBelz86DBO_DV25Amik66Michaelfp13mmbr160647Giraldoj13FLMike31AmínAA13SpongYe27 Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 4:Community MembersSolutionsSuper UsersSolutionsPower Apps DBO-DV21WarranBelz26Giraldoj7mmbr160618Muzammmil_0695067Amik14samfawzi_acml6FLMike12tzuber6ANB8 SunilPashikanti8
On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners. The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights. Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.
We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for. We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer. Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together. Here's to new beginnings and endless possibilities! If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport. To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages