I'm appending a row in Google sheet from a simple html form ussing fetch/doPost and like to process the new row by script function.
The code is from GitHub (jamiewilson/form-to-google-sheets)
html part:
fetch(scriptURL, {method: 'POST', body: new FormData(form)})
.then(response => showSuc())
.catch(error => alert('Error! ' + error.message))
GScript part:
function doPost (e) {
var lock = LockService.getScriptLock()
lock.tryLock(10000)
try {
var doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
var sheet = doc.getSheetByName(sheetName)
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
var nextRow = sheet.getLastRow() + 1
var newRow = headers.map(function(header) {
return header === 'timestamp' ? new Date() : e.parameter[header]
})
sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])
// Browser.msgBox("posted");
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
.setMimeType(ContentService.MimeType.JSON)
}
catch (e) {
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
.setMimeType(ContentService.MimeType.JSON)
}
finally {
lock.releaseLock()
}
// Browser.msgBox("posted");
}
Because adding data this way doesn't triger onEdit or onChange, I'm tring to figure out where in doPost to place the call to function which will process the new row. Both Browser.msgBox (commented in the above example) doesn't show any output neither the call to my function placed there. Any idea how to solve this problem?