I am trying to create an event to trigger on form submit. I have been using this script below and it has been working fantastically. However, each time the response is edited, it duplicates the row. After researching, I know I need to move the script to be attached to the form instead of the spreadsheet. I am very new to apps script and can't figure out how to change the script to work from the form.
function timerEvent(e){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = e.range.getSheet();
if(sourceSheet.getSheetName() === 'Form Responses'){
var row = e.range.getRow();
var rowRange = sourceSheet.getRange(row, 1, 1, sourceSheet.getLastColumn());
var rowValues = rowRange.getValues()[0];
if(rowValues[21]!= ""&&rowValues[17]!="Yes"){
var targetSheet = ss.getSheetByName("UENA");
targetSheet.insertRowBefore(2);
var targetRange = targetSheet.getRange(2, 4);
rowRange.copyTo(targetRange);
targetSheet.getRange('4:4').copyTo(targetSheet.getRange('2:2'), SpreadsheetApp.CopyPasteType.PASTE_CONDITIONAL_FORMATTING, false);
targetSheet.getRange('4:4').copyTo(targetSheet.getRange('2:2'), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);
targetSheet.getRange("A2:AD").sort([{column: 8, ascending: true}, {column: 7, ascending: true}]);
targetSheet.getRange('B2').setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(false)
.requireValueInList(['AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH', 'II', 'KK', 'LL'], true)
.build());
targetSheet.getRange('C2').insertCheckboxes();
}
}
}
Allow response editingset to On? Would you please describe any other relevant form settings and the process by which a user can edit their response. (if the user selects "Edit your response" immediately after submitting the form, then the response is not duplicated.)