Populate Google Form With Short Question from Google Sheets (App Script)

100 views
Skip to first unread message

Kerella

unread,
Sep 24, 2023, 11:29:47 PM9/24/23
to Google Apps Script Community
I want to auto populate my google form. However, instead of dropdown, I want it as short answer with response validation of 'is number'. I have a list on my google sheet that is constantly changing. I already saw a solution in stackoverflow.com. It already is auto populating my google form based on google sheet. However, it doesn't delete the previous items on google form when I tried changing it on google sheet. 

Below is the appscript I found on stackoverflow. The function createNewSaleItems is working. However, the deleteitems function is not. When I looked at the logger log, It is not showing the items found on my forms.
function deleteItems() 
{ var ss = SpreadsheetApp.getActiveSpreadsheet() var formUrl = ss.getFormUrl() var form = FormApp.openByUrl(formUrl) // list page breaks var items = form.getItems() var index = items.findIndex(item => item.getType() === FormApp.ItemType.PAGE_BREAK); // Logger.log(items) // DEBUG // Logger.log("DEBUG: Total number of items: "+items.length) // Logger.log("DEBUG: index = "+index) // Last index = Item.length-1 // index = zero-based, // loop through form from bottom to top if (index !== -1) { for (let i=(items.length-1);i>index;i--){ var item = items[i] var title = item.getTitle() var type = item.getType() var id = item.getId() // Logger.log("DEBUG: i:"+i+", Title:"+title+", type:"+type+", ID:"+id+", Index:"+item.getIndex()) form.deleteItem(i); } } }

function createNewSaleItems() { var ss = SpreadsheetApp.getActiveSpreadsheet() var newItemSheetName = "NewSaleItems" var sheet = ss.getSheetByName(newItemSheetName) var formUrl = ss.getFormUrl() var form = FormApp.openByUrl(formUrl) // get sales items values var aLastRow = sheet.getRange("A2:A").getValues().filter(String).length; var itemNames = sheet.getRange(2,1,aLastRow,1).getValues().flat() // Logger.log("DEBUG: Item Names: Range = "+sheet.getRange(2,1,aLastRow,1).getA1Notation()) // Logger.log(itemNames) // DEBUG // Logger.log(itemNames.length) // DEBUG // define Text validation var textValidation = FormApp.createTextValidation() .setHelpText('Quantity not greater than zero') .requireNumberGreaterThan(0) .build(); for (var i=0;i<itemNames.length;i++){ // Adds a text item with the title = spreadsheet Value var item = form.addTextItem() item.setTitle(itemNames[i]).setValidation(textValidation) // Logger.log("DEBUG: Added New Item - i: "+i+", Name: "+itemNames[i]) } }


Here is my spreadsheet - 

Here is my form - 

here is my app script - 
Reply all
Reply to author
Forward
0 new messages