Can I make a script that creates a schedule? - google-sheets

I know this is a generic question.
My wife has about 60 individuals she needs to see every month. Scheduling takes a large portion of her time.
Each individual has their own needs. Times they cannot meet for one reason or another. There are also individuals that need to be seen multiple times a month while others are once a month.
What I would like to do is create a roster for each individual on a page and then it will create a schedule for her that reduces travel distance.
Is this possible in Google sheets scripting?

You can definitely create a script for what your wife needs to do. The Apps Script methods you need to use will depend on what you want to do specifically and how you are going to accomplish this.
For instance you can use the methods from the SpreadsheetApp class in order to pull the data from the specific sheets and cells and the methods from the CalendarApp class to create the Google Calendar events based in the information from the spreadsheet.
You could even use the methods from the MailApp class in order to send emails to confirm to the individuals that the event was created.
In addition to all that you could also get the input data to create the events from a form that would need to be filled by each individual, and then just process the information from the responses spreadsheet and create the events based on the criteria you will be using to decide which event goes first.
I leave below some examples of some methods you can use for this.
References:
SpreadsheetApp
Method: getCurrentCell()
CalendarApp
Method: createEvent()
MailApp
Method: sendEmail()

Related

Use Google Forms for Sociometry

I wonder if it is possible to use Google Forms to gather Sociometry responses.
See this picture as an example:
Clarification:
I want to create many rows per a single responder (see in my picture, there are 5 rows for responder 1, which represent each of the 5 Peers the responder needs to rank) . The second issue, is that the population always changes (responder 1 needs to rank 5 people, while responder 2 needs only 4)
Just create a form and link it to your sheet.
I think you have already done this, but just in case:
create a new form.
link the responses to a spreadsheet.
How to identify the responder
Unless you are in a workspace account and all the responders are also in a workspace account there is no way to identify the responder. The only way that you can do this is to ask the responder in the form for their "Responder ID". The only field that will be populated automatically will be the timestamp.
How to get multiple rows per response
The simple way is to simply get the participants to fill out the response multiple times. The more complex way is to look into Apps Script to construct forms based on a certain criteria, though this sounds like it will probably be complex to do in this way. Maybe you would be interested in building an Apps Script web app with which you could build an html form. That will probably give you more flexibility, though it will be a bit more work to set up.
How to organize your sheet so that all Responder IDs are sorted.
You can do this manually by filtering or sorting the data. Alternatively you can look into Apps Script to do this process automatically every few minutes or hours, depending on what you need it for.

Trying to create a custom process that shares specific information

I work for a high school that has a regular four day school week and calls students in for "Reteach and Enrichment" on Fridays. To help organize the schedule for this, the school has created a Google Sheet that lists all of the student names and allows the teachers to fill in what time they would like any particular student to come to their class that Friday. This is working fine for the school's organizational side, but informing students of their assignments is currently a bit of a nightmare.
Because students will try to get out of anything, we have to have documentation indicating that we "told the students they need to come to our classroom on Friday". This is currently done in the form of giving a student a slip of carbon copy paper informing them of the time they are called in. As you can imagine, this is extremely time-consuming and full of holes since the students can throw the paper away or claim "they never got the paper" even though we've got a second copy of that paper indicating that it was filled out. But I digress.
The reason I'm writing to you fellow internet people is that I've taken on the task of trying to streamline the process of notifying the students of their schedules for Fridays. Because of privacy issues, we cannot give the students read-only access to the master list for Fridays, but I'm looking for a way to inform them of their specific information. My first thought was to write a program that would make a google sheet of each line on the master sheet, and share that sheet with the student whose information was on that line. This seems painful to set up and manage though and will lead to a lot of documents in google drives that are only needed for a week. The second problem is that I'm not sure what type of application I could use to run a program that would need to be able to access one google sheet, copy information from it, create a new google sheet, paste the copied information, gather the correct account the information needs to be shared with, and share read access to the new sheet that was created. I was thinking of using Auto Hotkey, but I know there's got to be a better solution to this problem.
If you have any suggestions for a different approach, please let me know. I believe that I can get an automated process to do what I described above if I can get the process down to a rote set of steps to take for each line on the original google sheet. But I'm hoping there's a way to do like an XLookup or Vlookup from a new sheet that references the original or something.

Trying to get analytics on Microsoft teams calls

I am trying to put together analytics on Microsoft teams calls. I would like to get hold times, number of transfers, call time, etc. I came across this call https://graph.microsoft.com/beta/communications/callRecords and it gives me a list of calls with call times, but I can't find a way to get hold times, what line it came in on, etc. Greatly appreciate any pointers.
First of all, this end point https://graph.microsoft.com/beta/communications/callRecords only allows you to query a single call record using its ID, it does not support querying a list of call records for the whole tenant or for a specific user.
The only way currently to find this ID to query the call record is by setting up a web hook to receive change notifications. Refer to the following documentation for more info on change notifications.
To directly address your question, i am not one hundred percent sure but i believe the information you're looking for could be found inside the list of sessions and segments inside a call record.

Zapier: How to make sure that I return items only once for polling trigger

I am implementing a Zapier Integration's polling trigger. I have built a trigger and an API which serves the data correctly. However my concern is about: how to make sure that I provide the new data only, when zapier polls.
I know about the deduplication mechanism. I provide ids in all the items and Zapier makes sure that one item is used only once. However in my application the items can go into hundreds very quickly and in months they will be in thousands and beyond. I want an optimised solution where I serve only the items which will eventually be used by Zapier, thus reducing the memory usage in my application.
Some timestamp can be save for every call, which I can store inside my application but that will not be a foolproof solution. Same API can be used by user in multiple zaps, plus there are sample calls etc.
Great question! The simplest way to do this is to add a date parameter to your API that lets you filter for items created after that date.
Then, in your Zapier code, provide that param for all trigger calls. I'd set the time to 24 hours ago. So, when a trigger fires, it'll only get items created in the last 24 hours. That could be a big list, but items will cycle out after a day.

Writing a Custom Script

Does anyone know how to write a script that will allow me to have a list become visible based on the text in a particular cell in my sheet?
Here is what I am trying to do: I am trying to create personalized book lists for my students based on the specific classes they are enrolled in. So, when I choose the class, I would like the book list to automatically populate so that I can create a list for each student without much time involved for each student. Also, some classes may involve multiple books, so these would need to be on separate lines in the spreadsheet. Is this even possible?
I hope this will help you just go your sheet Data -> Validation then you can create Dropdownbox so to achieve your requirement create two sheet in your working sheet then give validation finally do a connection with classes and books

Resources