I'm trying to build a Google Forms that fills out certain cells of an existing Google Sheets with the responses from the Google Forms. I also need some of the answers on the Google Forms to come from the spreadsheet in a drop down style menu.
The existing spreadsheet is currently being used by an organization to have its members log some information on a weekly basis, however, some members continue to fill out the form incorrectly no matter how many times I've corrected them. For this reason I'm trying to make the process more automated.
The way the current spreadsheet is set up is that there are multiple sheets for different divisions of the organization. In each sheet there is a column dedicated to the names in that division, with a different name on each row of that column. There are also columns dedicated to specific weeks, so week 1 information is say put into Column D and E, Week 2 information in F and G, etc.
EX:
# | Name | Percent |... Week 1 .... |... Week 2 .... | ....
1 |.. Bob..| 0%..... ..| Info 1| Info 2 | Info 1| Info2..|
2 | ..Joe..| 99%......| Info1..................................
I'd like to be able to:
Make the first question of the form a drop down menu selecting the division, which would then make the rest of the questions' information based off the sheet corresponding to that division.
Second question a drop down menu to select the name. The names would be based off the names listed in the already existing name column of the spreadsheet.
A drop down menu to select the specific week they are submitting information for.
A fill in box question that they fill in with "Info 1".
A fill in box question that they fill in with "Info 2".
When submitted the form would find the correct sheet based off (1), then find the correct row based off (2), then find the correct column based off (3), then copy (4) and (5) into the corresponding cells.
Is it possible to do this? Or would I need to create a separate form for each division?
I don't have any familiarity with Google scripting, although I am experienced with C++ and have a basic working knowledge of scripting in Python.
This will be difficult to implement (but not impossible) with stock Google Forms. You can't use Google Apps Script to manipulate the display of a form in response to user actions like you can with Javascript on a form you've coded from scratch.
Google Apps Script can generate and manipulate a form in the same way you can in the Form Editor, and it can be triggered when the Form is submitted to take action with the response, but it can not interact with the user directly.
To achieve what you want you have a few options.
You could set up a multi-page Google Form with logic branches to get the forms behaviour you want, then use an Apps Script triggered onFormSubmit() to take care of moving data to the appropriate locations.
Or you can skip using stock Google Forms altogether and instead present the form using a Google Apps Script published as a web-app, which gives you full control over the form (HTML, CSS & Javascript) displayed to the user, but you do not get to leverage any of the Google Form features. You could render the form with doGet() and process the submission with doPost().
A third approach would be a hybrid of the two, set up several individual Google Forms, and use an Apps Script published as a Web App to display the first drop down and direct the user to the appropriate form. You could then have scripts triggered onFormSubmit() of each of the Google Forms to handle moving your data around.
See the following:
https://developers.google.com/apps-script/guides/triggers/events#google_forms_events
https://developers.google.com/apps-script/guides/web#deploying_a_script_as_a_web_app
https://developers.google.com/apps-script/guides/html/
Related
I have a contact form in different languages. All Forms (1 per language) store their data on a certain page. When I click "Mails" and that storage page, I see a list of all messages from all forms - so far so good.
But when I click CSV Export, I only get the data from one language. After a while of debugging I think I have found the reason - this is because the export service collects the fields from the first message and based on that field list it builds all the other rows. As other messages are from different forms (i.e. languages) there are no corresponding fields for those messages and they are not exported.
Have a look at https://github.com/Intera/typo3-extension-powermail/blob/master/Classes/Domain/Service/ExportService.php --> see function getDefaultFieldListFromFirstMail
Now I am writing to SO instead of Github Bugs, because I still think that there is something wrong with my setup, as Powermail is quite widely used and such an error would have been reported earlier.
The problem was the way I set up the translations of the Powermail forms. I have created a different form for each language, which is not the correct way to do it.
I have found a video which describes the correct process: https://vimeo.com/268654409 .
In the case that the video gets removed, here are some screenshots:
1.) navigate to "LIST" on the the page of your form, select your form and click "Create new Record".
2.) Add a new record "Alternative Page Language"
3.) Select the desired language for the new record and name it properly:
4.) Now you should have a new localization in your powermail fields:
Click on that localization entry to edit / translate it.
I'm just starting to get into Access due to my job and am tasked with creating a form that displays Data for the individual users on load. Basically what it needs to do is to get data from 3 tables, join them together, and then display the found rows that match that person's accounts they are responsible for managing.
I have this working via a single table Query using a listbox and a datasheet view, however, being a web developer by trade, I would like functionality that displays items similar to what a Unordered List(UL) would display and with functionality that allows the user to click on the company name(which acts as a hyperlink) to then update the information in a new form that I have built, by loading that data into the form, and allowing them to update the fields that I have designated as changeable.
Is this possible in Access via a form or would this be too difficult to implement? I'm decent with VBA, still learning what a lot of the things do, but as far as the logic and things like that to make something happen, I can do that no problem. These rows all have a unique ID so I would be able to either keep them in a collection to populate the form data or I can simply requery the data using the ID number for loading the form data.
A listbox performs like a combobox in datasheet view. Did you mean you have a combobox?
Actually very simple to accomplish, and various methods available. I assume you have a form bound to your Query with a combobox that lists companies. Controls have events. Use the Click event of the Company control. I use only VBA (not macros but macro could do this). Select [Event Procedure] in the event property. Click the ellipses (...) to open VBA Code Editor, type code into the procedure:
DoCmd.OpenForm "CompanyInfo", , , "ID=" & Me.tbxCompany
Keep in mind, controls used for the purpose of entering/selecting filter criteria should be UNBOUND, otherwise you would change data in record. However, using the Click event of a BOUND combobox (as long as you click on the box, not the dropdown) or textbox will not change existing data, not so for a listbox.
Let's say I have a visualization that is displaying production line output over time. There are 6 production lines and I only want to display one production line on the visualization at a time. I can add a Production Line filter to accommodate this.
I want to create a dashboard view for each production line. So I want to create 6 dashboard views each with the same visualization filtered for a different value. However, I do not know how to do this without creating a copy of the visualization and dictating the exact Production Line filter.
Reasons for doing this:
I want to publish the specific dashboards and be able to embed the view into a SharePoint site (that is Production Line specific) and not require the user to filter the view each time
If I make a change to visualization, I want it to be transferred to all dashboard views for all Production Lines and do not want to make the same change to 6 visualizations.
Is this possible?
You can't do it with a dashboard. Try doing it with stories though. Create one story point for each production line. You can drop a single copy of your viz onto multiple story points, each with filters independent of each other, and any changes to the worksheet will be reflected in all six story points.
Yes it is possible. You could use a story as Sam M says, with 6 views of your dashboard each with a different filter setting,
Another choice that works in the embedded viz use case is to create a single dashboard, and apply a filter to all the worksheets on that dashboard. When using Tableau Server, you can supply the filter value as a query parameter in the URL (see the documentation)
After you test it out and are happy with the result, you can remove the filter control from the dashboard so it is no longer visible. You can still control the filter setting via the URL (or via the JavaScript API)
This allows you to adjust the viz that users see in your embedded view without making them manually select the filter setting, and also without creating six nearly identical dashboards.
Context:
I teach at a university with mostly monolingual, English-speaking teachers, and students with mostly Russian and Kazakh names.
I want to create a simple form (like this https://docs.google.com/forms/d/1zo0vSfrH-xIosENy1wVjOd_VvPL5LL6UX6g4VqIPFn0/viewform ) that would keep track of reports of plagiarism on a Google Sheet (like this https://docs.google.com/spreadsheets/d/1h2nAvCq31xumi4SvjMvWWp8RR7ppJ_NtLCiuvrLqVkc/edit?usp=sharing )
Having the English speaking teachers type in Russian and Kazakh names would likely lead to mistakes. There are too many students at the university to choose them from a drop-down menu, and would be too many teachers and courses to create separate Google Forms for all of them, or to use Google's branching page choices (it would require creating hundreds of pages). So I would like instructors to be able to type in the Student ID # and their own Instructor ID #, and then have some way to verify that they have typed that information in correctly (so we don't have the wrong students being penalized, or penalties that don't get assigned to any student at all).
Questions:
1. Is there any possible way (via scripting, an add-on, etc.) to have Google Forms take the Student ID from Page 1, then look up the student's name on the Student Info tab of the Google Sheet and insert it into the text field on the second page of the Google form, so the instructor can verify it's the correct student? (Or any other technique anyone can think of that would allow a Google Form user to verify that they had entered the correct data, or help manage the massive number of choices of students in a university of several thousand students.)
If (as I'm afraid), there is no way to do it with Google Forms, can anyone suggest a Form creation platform that would do something like this, and that would integrate with Google Sheets or something similar?
Any help would be appreciated. Thanks in advance.
If you are open to doing it differently I'd go this route...
1) Use a short answer box and allow edits to answers.
2) Put the onSubmit() trigger into the sheet. When a submission comes in, send a follow up email to the person with the ID that they typed and the student name that it corresponds to. Let them know that no action is required if that is correct. If it isn't correct, they should edit their response with the edit response link which you can get using getEditResponseUrl(). I'd call it done right here and only worry about additional features if they are needed. It isn't as ideal as verifying at the time but would get the same thing done for people that can't keep their IDs straight. :-)
3) But... if you have people that keep messing up and they don't fix their issues or whatever, add a link in the email to confirm that the entry is accurate. If it isn't then a weekly/daily task runs that deletes any entries that haven't been confirmed and are older than Y days.
4) Alternately, instead of verifying what they type, give them drop down lists made up of a combination of student ID and name. I'd have multiple lists, depending on the number of active students. One or many though, make a script in the sheet that updates the dropdowns in the form either on edit or by manually running the script, either from a menu item or by attaching it to an icon on the page where the IDs/names are at. They should see 12345 - Joe Smith as the option and can find the right one if that student name doesn't match the ID they thought they should use.
I have a script like #4 that I use to populate a form with updated products whenever the list changes. I tied it to a big red button JPG to help the end users remember to run it when they change something, as a menu option didn't work and running every time there was an edit was too much.
If you list of students/IDs also includes the teachers/classes/etc you could even do custom forms for each staff member that uses the form that only populates their students. Not sure how many staff you have so that might not be practical. Though again, once you have the script and the data is accurate, updates are a single click.
I am a Django noob and have a situation that goes beyond the basic documentation, etc.
I am updating an ordering webpage that has a form structured as follows:
several text boxes, etc to gather general info (name, date, etc)
two separate tables for selecting (via checkbox) catalogs that are generated/managed using endless_pagination. Each table can have thousands of records, hence the endless_pagination. The first column in each table is a checkbox with value = catalog.id.
a textbox where the user can manually enter catalog IDs
a submit button
I am not sure how to keep track of what a user has selected in the two paginated tables since the checked boxes are lost when choosing a different page. Also, when the user flips back and forth between the pages, the previoulsy checked catalogs will need to be re-checked(since the checked state is not maintained). I am also not sure which tool(s) to use to deal with this.
My thought is to use JavaScript (with which I have minimal experience) to update a list of catalog IDs whenever a checkbox is checked/unchecked and:
- and attach that list to the form or
- update a variable in the form or
- send as a variable separate from the form, whichever is possible/makes more sense.
I'm hoping that maintaining a list of catalog IDs is possible because the next iteration of this form will likely include some sort of filtering so I'm trying to devise a solution that will not have to be reworked later.
I have reviewed a lot of posts but I believe the closest solutions are rendered useless because of the endless_pagination.
Let me know if further clarification is required. Thanks in advance for any suggestions.
UPDATE
I tried using JavaScript to store the catalog IDs in an array when a checkbox is checked. This does not work when a user selects another page in the pagination. The array of checked catalog IDs is lost when the page 'reloads'.
I'm running into this problem right now as well. I'm handling this by writing the checked items to localStorage so they carry across to page 2, 3, etc.. as well as show up as already checked when you go back to page 1. Then every time the page loads, either find and check the existing checkbox, or create a hidden input with the appropriate name and value and append it to the main form.
var selected_items = []
function add_item_to_checkbox(item) {
localStorage.setItem('selected_items', JSON.stringify(selected_items));
checkbox.on("click", add_item_to_checkbox);
bahh... Just look at my jsfiddle it's easier to read and yeah. I don't have to type JS into a textarea on stackoverflow.
Here is my javascript minus a few things that are specific to my code. I'm sure it could be improved upon but it works really well for my application.