0
votes

I am trying to make a Google script to run on form edit but not sure if it would be onEdit or onSubmit when a person edits their Google form through the Google edit URL with new answers at a later date.

I need to grab the row their response is on and clear contents of cells AO, AP, AQ, and AR only.

I know this has to be a big mess up but I am trying. Here is what I have so far:

function onEdit(e) {
      var sheet = SpreadsheetApp.getActiveSheet();
      var editRange = sheet.getActiveRange();
      var editRow = editRange.getRow();
      var editCol = editRange.getColumn();
      var range = sheet.getRange("A2:AL");
      var rangeRowStart = range.getRow();
      var rangeRowEnd = rangeRowStart + range.getHeight()-1;
      var rangeColStart = range.getColumn();
      var rangeColEnd = rangeColStart + range.getWidth()-1;

      if (editRow >= rangeRowStart && editRow <= rangeRowEnd 
             && editCol >= rangeColStart && editCol <= rangeColEnd)
    {
        var ss = e.range.getSheet();

        ss.getRange(thisRow,"AO" & i & ":AR" & i) // Get cells in range AO,AP,AQ,AR to clear out
              .clearContent();
     }
};
2

2 Answers

0
votes

I have started over again. I have this script working but not the way needed quite yet. I need it to only clear contents of the cell (AH) for the row where firstdate != secdate. Right now it clears all cells of column AH when one cell meets the criteria.

function compareClear() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName("Sheet1");
      var firstdate = sheet.getRange("E3:E").getValues();
      var secdate = sheet.getRange("AG3:AG").getValues();

      if(firstdate != secdate){
            SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("AH3:AH").clearContent();
      }
 }
0
votes

Just in case anyone else might need a helping hand on this subject:

The script with a big helping hand from Spencer in Google Docs forum and some added changes by me works like a charm. It may not be the prettiest script but it does what I need.

function compareClear() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName("Form Responses 1");
    var firstdate;
    var secdate;

    for (var i = 3; i < sheet.getLastRow(); i++) {
        firstdate = new Date(sheet.getRange(i, 4).getValue());
        secdate = new Date(sheet.getRange(i, 45).getValue());

        if(firstdate > secdate){
               sheet.getRange(i, 41).clearContent();
               sheet.getRange(i, 42).clearContent();
               sheet.getRange(i, 43).clearContent();
               sheet.getRange(i, 44).clearContent();
         }
     }
 }