School Detention Tracker in Google Sheets - google-apps-script

I am trying to make a spreadsheet for the Deans at my school to track student detentions. They aren't that great with technology so I want to make it as simple for them to use as possible.
Here is a link to the current layout: https://docs.google.com/spreadsheets/d/1FIW0QAWGStgdUmYU0rWAceWI-YvjM1RIIC_KC2OeWWI/edit#gid=0
It would have a row for every student in the school and use different columns to record when students received a detention and whether or not it has been served yet. I created a formula to check how many unserved detentions each student has so that the deans can easily sort for who needs to serve detention that day.
I want some help creating two scripts:
A button that the deans can click to assign a student a detention. It would need to find the next available empty cell on that row, input the current date, then find the next available empty cell and write "Issued"
A button that the deans can click to mark that student's detentions as served. It would need to find and replace all instances of the word "Issued" on that row with "Served"
Ideal dean workflow:
Issuing a detention - Find the student on the list and click the "Issue" detention button
Running detention - Find the student on the list and click the "Served" button
Meeting with a parent/looking over records later in the year - Find student on the list and scroll horizontally to view dates of all detentions earned that year.
Potential snags:
One of our deans already sheared a spreadsheet trying to sort it. Is there a way I can reduce this risk while still giving him the ability to sort by student name and number of unserved detentions as neccesary?

Here are a few workarounds in lieu of a macro:
To input date > ctrl + semicolon, or command + semicolon on macs. This will enter the current date in the cell.
Use the =countif formula to keep an easily sortable tally on number of detentions a student has been assigned and served
An if statement can let you know that, if the total count assigned vs. total count served do not match, then a student still has a pending detention.
I also recommend keeping a "viewer" tab that your dean uses and the actual area where people are recording the data separate. That way the dean can sort and manipulate your data without actually affecting the original entries.

Related

Is there a way to make a Google sheets cell display multiple hyperlinks (one per line in the tooltip) when selected?

I develop this spreadsheet here:
https://docs.google.com/spreadsheets/d/1ye_HTjC_jrExwMDPM2X1mtXhSDQOtjg841SzBno0ExU/
Essentially, someone hosts a period of multiple tournaments corresponding to various timeslots throughout the week, and they post a final round replay (URL) of each tournament in one cell: Column G in the 'Chronology' sheet. So every cell in Column G, contains a list of replays, e.g. http://a, http://b, http://c (if there were 3 tournaments).
One day, less than a month ago, I was pleasantly surprised to discover a hyperlink of each replay appeared on each line in the tooltip when I selected the latest replay cell. I got really excited, and decided to trigger it for cells (I think I spammed the return key). I assumed the way to trigger would stay, but it seems to me it's now been altered so it won't result in multiple hyperlinks being displayed in the tooltip.
You can see a good use of it in Row 988 (984th edition), but it's gone by Row 991 (987th edition).
So my question is, is there a way to code this in the script editor or a way to still trigger this in the spreadsheet itself?

Dynamic form with Spreadsheets and apps-script

I'm trying to create a volunteer signup form for a special needs program.
Aim of this form is to take a spreadsheet with the schedule information of riders and times for a given week and update the corresponding column for [Day, Student] with volunteer name.
Fields are
Volunteer name
Day
Student
A student has maximum of one class per Day.
Based on the day you select, I would like to give a set of Students for that Day. I want to populate the Student Choices based on the Day Selected.
A lot of the volunteering folks are not very adept at using computers so this seems to be the simplest way of capturing a volunteers interest for a given [Day, Student].
ItemResponse gives me a way of accessing the response to each question, can this be done in realtime while the form is being filled s the question.
Is this possible?
I'am going to test this soon but any pointers would be appreciated. Thanks

Showing values of multiple related records in a continuous form

I'm very new to Access (doing some volunteer work with it), and am having trouble with displaying related information. I've worked with mySQL databases and am familiar with php/python scripting in that respect, but it seems that that doesn't translate well to Access. Here's what I have:
I have a table full of different locations that are monitored by a set of volunteers. This table holds info on the location's name, address, etc.
I have another table containing volunteer info (name, address, etc.) I am using a third assignment table to link this info, where I have a field for the location id, the volunteer id, and whether the assignment is still active.
My trouble comes in here. I'm trying to make a continuous form that has every location listed, but so that each record has an embedded list of volunteers with currently active assignments. Subforms won't work in a continuous form. I've tried listboxes, but I don't think this is their intended purpose. I can get the list of volunteers via listboxes, but it is all volunteers with any assignment. I need some way to get the parent record's location id. Additionally, I'd like clicking on one of these volunteer names to open up their specific record in a volunteer form.
I'm using Access 2007. Any advice would be greatly appreciated.

Access 2010 update date field based on another field

I'm relatively new to Access and VBA but I have managed to get some basic VBA tricks working in both Access and Excel. Now I've got a challenge that I can't seem to crack. I'm building a database to track maintenance of a small trucking fleet. I've got most of the tables and forms I need to do the basic tracking and management of equipment and maintenance in place.
One of the things we're tracking is called PM's which stands for preventative maintenance (lube jobs and oil changes). We do those on calendar intervals for trailers and mileage intervals for tractors. Right now, I'm trying to get the calendar tracked equipment working. I've a table called tblEquipmentMaster which is where all the specifics for each piece of equipment is kept (make, model, year, VIN, etc) and that table has a field called LastPMDate. All the maintenance records go in two other tables, tblMaintenance which records the unit number, vendor, invoice date and invoice amount and tblMaintenanceDetails which records the each line item of work that was performed on the unit (i.e. replaced water pump, replaced headlight etc).
The maintenance details table also contains a drop down list of standard maintenance codes to allow for easier searching of certain maintenance items later. One of those codes is PM. I also have several forms built to interact with these tables including a data entry form for adding new maintenance records.
What I'm trying to accomplish is to have the LastPMDate field for any unit number in tblEquipmentMaster automatically update to match the InvoiceDate field in tblMaintenance anytime an invoice is entered for that unit number which has a line item containing the code PM.
I've tried building an update query to do this but in addition to changing the LastPMDate field like I want it to, it also ends up changing the invoice dates for all previous PM invoices to the date of the last invoice which contained a PM. Not good.
So my question is, would an update query be the best way to do this or would I be better off with some sort of VBA solution? I have an add record button on my maintenance invoice data entry form which users use as a save record/clear form button when all the info for an invoice has been entered. I'm thinking some VBA code tied to the on_click of that button which would look at the invoice you just added, determine if it contains the PM maintenance code, then update LastPMDate field for that unit number with invoice date from that invoice would be a good way to do it but I honestly have no idea what functions or methods I'd need to get that to work.
Any insights or suggestions appreciated.
It's very hard to follow the flow of what you are describing, even if I have experience of PM and AM (Autonomous maintenance).
What is lacking is the relations between the three tables.
Nevertheless I prefer VBA solutions (maybe because I started programming when everything had to be written...). With VBA you can finely control your workflow.
If I understood well the 1st table is tblMaintenance in which you have the Invoice data.
Then you should have to scan the tblMaintenanceDetails to find the list of PMs and filter the tblEquipmentMaster with current PM value to update the LastPMDate with the date of the 1st table.
Did I succeed in providing you an idea to solve your problem?
Let me know.

In which tables are stored some Sales Order dates

I want to make an excel graphic with 3 values:
Sales Order Date (The date sales enters the sales order)
Requirement Date (The date the customer wants this order)
Closed Sales Order Date (When sales closes the order)
This will be used to measure the service of our plant against completed delivered sales orders monthly.
I already found the first 2 data cells on table VBMTV, anyone has an idea where can I get the information regarding as the date sales close the order once it has been delivered to the customer?
Regards,
Assuming that the data is displayed in a transaction, you can do the following:
position the cursor in the field you are interested in
press F1 - you get a help text in a dialog labeled 'Performance Assistant'
click the button for 'Technical Information' (looks like a hammer and wrench) - you'll get another dialog
in this dialog there are fields for 'Table Name' and 'Field Name'
For most transactions, this information maps to the specific tables/columns in the database. There are some exceptions to this rule (mostly for those cases where the data is not directly read from the db), but it is a good start and works for about 80% of the cases.
If F1 and Technical Information (F4) does not work you can also try running a trace using ST05. (Do this only for one user and make sure to disable the trace once you are done).
I believe Sales Order Complete may be a status. (TECO or "Technically Complete" if I'm correct). The table that stores the date a specific status was set is JCDS. You will have to read it on the OBJNR of the sales order and the internal status number of the status that you care about.