I am making a map painter programme, that takes in X, Y and colour data from user input and stores in a Google spreadsheet.
The data is sent to the spreadsheet as a form, following this solution. When the form is submitted, it is sent as a new row to the sheet called Global. However, I have three sheets, Global Local and Dungeon and based on variables contained in the form data being submitted, I want the doGet() function in my appsheets to send the new row to the correct sheet.
Here is the appScript DoGet():
function doGet (e) {
const lock = LockService.getScriptLock()
lock.tryLock(10000)
try {
const doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
//++++++++++++++++++SEND TO GLOBAL++++++++++++++++++++++
const Global = doc.getSheetByName("Global")
const headers = Global.getRange(1, 1, 1, Global.getLastColumn()).getValues()[0]
const nextRow = Global.getLastRow() + 1
const newRow = headers.map(function(header) {
//returns a new array, produced by applying a fucntion to every value in an array
return header === 'UniqueID' ? new Date() : e.parameter[header]
})
Global.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])
//++++++++++++++++++++SEND TO LOCAL++++++++++++++++++++
}
To clairfy, this code WORKS but I am struggling with how to tell it WHICH sheet (Global Local and Dungeon) to send the new row too. Right now, they are all going to Global. However if I have a field in my form that says either Global, Local or Dungeon, how can I have the appscript read this and act accordingly?
Conceptually, I need to refer to the part of the incoming form array that contains the name of the sheet, and then I can write the script to use that as the name of the sheet like this:
const sheetname = doc.getSheetByName("Global/Local/Dungeon")
Comments
Post a Comment