Hi @AB21 ,
Do you want to design an app for booking and using sharepoint as data source?
This is similar to meeting template screen and book a room template app. I suggest you refer these two templates about how to design this kind of app.


However, please notice that both these two templates use office365 outlook calendar as data source, not sharepoint.
So you could not use them directly.
Here is some advice:
1)create a list with these fields: teacher (person type), student(person type), start time(datetime type),end time(datetime type)
2)connect your app with this list, connect with Office365 outlook
3)insert a combo box(for teacher), a datepicker(for date),a drop down(for time)and a submit button like this:

4)set the screen's OnVisible:
ClearCollect(timesheet,{time:"10:00 AM-10:15 AM"},{time:"10:15 AM-10:30 AM"},{time:"10:30 AM-10:45 AM"},{time:"10:45 AM-11:00 AM"},{time:"11:00 AM-11:15 AM"},{time:"11:15 AM-11:30 AM"},{time:"11:30 AM-11:45 AM"},....);
ClearCollect(timesheet2,AddColumns(timesheet,"time1",TimeValue(Left(time,8)),"time2",TimeValue(Right(time,8))))
//build a table with all the time choices
set teacher combo box's Items:
Choices(listname.teacher)
set the datepicker's OnChange:
ClearCollect(filteredlist,
AddColumns(
Filter(list,DateValue(Text(starttime))= DatePicker1.SelectedDate,
teahcer=teacher drop down.Selected
),
"time3",TimeValue(Text(starttime)),
"time4",TimeValue(Text(endtime))));
//filter list based on the teacher and date that you select, insert two fields only with time data
ForAll(ClearCollect(busytime,
ForAll(filteredlist,Filter(timesheet2,time1>=time3,time2<=time4))
), //filter timesheet to get the unavailable time
Collect(busytime2,Value.time)
)
//get all the data from nested table
//You could use this to get all the data from nested table:
ForAll(originaltable,Collect(newcollection,fieldname.nestedfieldname))
set the time drop down's Items:
Filter(timesheet2,Not(time in busytime2.time))
Then the drop down will only display the available time choices.
set the submit button's OnSelect:
Office365Outlook.SendEmailV2(teacher drop down.Selected.Email,subject,body)
//please replace with the subject and body that you want.
You could try this:
Office365Outlook.SendEmailV2(teacher drop down.Selected.Email,"book teacher","student name:"&User().FullName&"date:"&date picker1.SelectedDate&"time:"&time drop down.Selected.time)
If you want to update your list by clicking this button too, you could try :
Office365Outlook.SendEmailV2(teacher drop down.Selected.Email,"book teacher","student name:"&User().FullName&"date:"&date picker1.SelectedDate&"time:"&time drop down.Selected.time);
Patch(list,Defaults(list),{teacher:combo box.Selected,
student:{'@odata.type':"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser",
Claims:"i:0#.f|membership|" & User().Email,
Department:"",
DisplayName:User().FullName,
Email:User().Email,
JobTitle:"",
Picture:""
},
starttime:time drop down.Selected.starttime,
endtime:time drop down.Selected.endtime
})
Best regards,