Google表格脚本onEdit表单响应清除单元格

时间:2017-01-12 21:44:06

标签: google-apps-script google-sheets google-form google-sheets-api

我正在尝试制作一个Google脚本,以便在表单编辑时运行但不确定当一个人通过Google编辑网址在以后用新的答案编辑他们的Google表单时,它是onEdit还是onSubmit。

我需要抓住他们的响应行并清除单元格AO,AP,AQ和AR的内容。

我知道这应该是一个很大的混乱,但我正在努力。以下是我到目前为止的情况:

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 个答案:

答案 0 :(得分:0)

我重新开始了。我有这个脚本工作但不是很需要的方式。我需要它只清除firstdate != secdate行的单元格(AH)的内容。现在,当一个单元符合标准时,它会清除AH列的所有单元格。

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();
      }
 }

答案 1 :(得分:0)

以防万一其他人可能需要帮助解决这个问题:

在Google Docs论坛中有来自Spencer的大量帮助的脚本以及我所做的一些更改,就像一个魅力。它可能不是最漂亮的剧本,但它可以满足我的需要。

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();
         }
     }
 }