I'm trying to make an inventory system and am struggling with using a Google form to check out inventory. I would like the form to validate that the products being removed from inventory are actually present in the inventory in a Google sheet. I've tried getting AI to write a script to accomplish this, but I can't seem to get it working. It still allows me to submit whatever I want in the text box for inventory removal. Any guidance would be greatly appreciated!
So to sum that up, can you use a column from a Google sheet for validating entries in Google form text box?
I'll include one version of the generated scripts. I've tried well over a dozen iterations, but hopefully this will provide some idea of what I've been working with.
function validateCaseNumbers(caseNumbers) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var dataSheet = ss.getSheetByName('Serialized Case Numbers'); if (!dataSheet) { throw new Error("Unable to access the 'Serialized Case Numbers' sheet."); } var existingCaseNumbers = dataSheet.getRange('E:E').getValues().flat().filter(String); // Assuming case numbers are in column E return caseNumbers.every(function(caseNumber) { return existingCaseNumbers.includes(caseNumber); });}function onFormSubmit(e) { var form = FormApp.getActiveForm(); var itemResponses = e.response.getItemResponses(); var caseNumberResponse = itemResponses.find(function(response) { return response.getItem().getTitle() === 'Case Numbers'; // Replace 'Case Numbers' with the title of your case number question in the form }); if (!caseNumberResponse) { // Case numbers response not found, prevent form submission throw new Error("Case numbers response not found in form submission."); } var caseNumbers = caseNumberResponse.getResponse().split(','); if (!validateCaseNumbers(caseNumbers)) { // Display error message var errorText = "One or more of the entered case numbers are invalid or were not checked in. Please enter valid case numbers."; var validation = FormApp.createTextValidation() .requireTextContainsPattern('.+') .setHelpText(errorText) .build(); caseNumberResponse.withItemResponse(caseNumberResponse.getResponse().setValidation(validation)); throw new Error(errorText); } }