I am new to PowerApps but starting to get a basic understanding.
I'm trying to create a checklist app using a Canvas app. Since I have no data source to start from, I basically just created the app layout first and now want to connect to an Excel sheet to capture the results of the checklist. I have created a sheet where I would like to capture the date, user, site where the checklist is for (currently a drop down list), and the Yes/No answers to the checklist questions (currently a toggle for each question). I've connected the sheet but I'm at a loss how to capture the information and write it into the spreadsheet.
I'm guessing we need to have the app create a new record (or row in the sheet) on startup and store the values until the end of the sheet (click the Submit button) when it will write them all into the approriate columns. But the how is where things get quite difficult. I've been reading about the Patch function but I can't work out how to use it in this context.
Any help would be much appreciated.
Below links might be helpful to start with:
follow the links provided in the documentation.
to know about patch function.
Thanks for that but I've already been through those. I have spent hours of reading before coming here.
The first link is about using an Excel sheet as a data source. I have no data source in this case, I am trying to capture new data into the Excel sheet.
I've read the information on the Patch function and I cannot quite work out how to match that information up to what I want to acheive here. The examples refer to using existing data as a key to which row we want to modify, again I have no data to key from here as it is a new entry in a blank row.
Hi @Scott_Wightman ,
Firstly, could you tell me how do you connect with excel, by choosing "import from excel" or "one drive"?
If you choose "import from excel", this is static data. You could only display data from excel. It's not supported to update or create data to excel.
I suggest you upload your excel file to one drive and then connect with one drive in PowerApps.
Secondly, do you want to update data by using a drop down control?
If so, I've made a similar test for your reference:
1)insert fieldname1,fieldname2,... in excel file (It's not supported to create field in PowerApps)
2)format the data in excel as a table
3)upload the excel fiel to onedrive
4)connect with one drive
5)insert drop down controls
Set the drop down's Items: ["Yes","No"]
6)insert a button
set the button's OnSelect:
Community Support Team _ Phoebe Liu
Just do a Form..you shouldn't need to use Patch for this.
Put a Form that is a New Form and connected to your Excel sheet (I prefer using SharePoint list..but it works close to the same as Excel) and when they are done have a button that does SubmitForm().
A lot of times people will think they can't do their's in a Form because it shows text input and they want a toggle or whatever it may be but you still can. If it defaults to a text input you can delete that and put your toggle in and then change the Update for the DataCard to:
Thanks for your reply.
I connected to the Excel sheet via OneDrive.
I have one drop down list at the start that I want to capture the value chosen, the entire rest of the app is a series of toggle buttons, I just want to write a value to the Excel sheet if the toggle is changed from off to on.
Thanks for the example that is very helpful I think I can work out how to adapt it to the toggle button.
2 questions please:
1. Are the fieldname1, fieldname2 etc the column headers in the Excel sheet? I assume yes.
2. How do you connect the fieldname1, fieldname 2 etc to the drop down control you've placed in the app so you can reference the fieldname1.Selected.Value?
3.. I understand the Default function creates a new row in the sheet with default values - how do you set what those default values are?
Thanks for your reply.
I am a beginner in PowerApps, so I'm not clear on what a Form is or how to create one and attach it to the spreadsheet. That is one of the key things I can't quite get a handle on. How to connect the various controls in the canvas app to the matching column and row in the spreadsheet and capture what is entered or set on the control or text field or dropdown. When the app is autocreated from existing data this is all done for you of course.
I'd also like to capture the users name - I've worked out how to display it but not how to write it to the spreadsheet in the Name column.
There will be many users creating checklists so we want the app to create a new row each time a user starts a new checklist and capture who they are, which site they selected in the dropdown list, the date and Yes or No depending on what they set the toggle to (default to No) the spreadsheet has columns for all of these things formatted as a table.
Hopefully I can help with this somewhat.
Firstly, in your Excel data source, I assume you have a sheet with a table, and that table has headers relating to each column.
From here, in your app you need to go to Insert > Forms > Edit.
You will see an empty square, and a prompt saying that it needs to be connected to a data source. This is where you connect it to your excel table. If you have not connected your app to your table, you can do so here. On the right side of the screen, there is the properties panel. You can select a data source from a drop down here, or add a new one.
You will be prompted to add fields. Add in the fields you want to populate using your app by selecting them from the Fields menu. The form will now have data cards, and each data card relates to a field from your table. You can add controls in to the data cards which will in-turn update that particular column. For example, you can add a text input control to your Name data card which will update that column when submitted. There will be one by default in your data cards.
On a side note, if you want to do this and have the form collect the user's name automatically without their input, set the Default value of this text input to Users().FullName, or something of that nature.
The Update property of any data cards should point to the relevant control in that data card. You could also, if using checkboxes or toggles, have the update property depend on that value. For example If(Checkbox1.Value=true,"Yes","No").
From there, if you change the Default Mode to New, the form will be ready to add new data to your data source.
Once you have added your controls to your form, the submit button should have an OnSelect property of SubmitForm().
@chrisog explained most of it pretty well. Get started with what he gave you and hollar if you have any issues come up.
You can do a lot within a form so get some of the basics of that down before you try using Patch. When you add the Form to your screen it is going to guess what you want to do but you can change and customize it however you like. Two main things I would mention when setting up your Form is that if you can't get your layout how you like try turning off the "snap to columns" ..which you wll see in the Properties in the panel to the right when you have the form selected. And if you are changing out stuff instead the data card you will need to select the data card, click Advanced on the right panel and then unlock the card. This will give you the ability to modify what is in the card how you like.
I typically set up the place I want my data stored with mostly text fields (even if I want it choices in the app) and limity the users options from the app. It is much easier to do that, especially when setting conditions.
Thanks for that Chris,
I've been reluctant to take this route suggested also by Rebecca becuase it means thowing away most of the work I've done designing the app to look how I want and starting again with a Form but I've gone ahead and started that process now. It's making more sense as I play around with it.
Once I've confirmed I can get this to work I'll be happy to credit you and Rebecca with the answer.
Keep up to date with current events and community announcements in the Power Apps community.
A great place where you can stay up to date with community calls and interact with the speakers.
Check out the latest Community Blog from the community!