如果Google脚本中的AND语句根据一个单元格中的更改和另一个中的值将数据移动到另一张工作表

时间:2018-09-22 06:57:51

标签: google-apps-script google-sheets

好的,我在这方面还很陌生。我有一个Google电子表格,我先对其进行填充,然后运行脚本来创建表单,以完成任务。我的最终用户将任务标记为已完成。我想要电子表格中的条目更改为“是”,并且是“验证”任务以复制到另一个工作表(日志)。如果我只有一个观察者,则可以复制条目,但是在将其他if语句放入其中时遇到问题。这是我要测试的东西...

function onChange() {
  // moves a row from any sheet to an archive sheet when a magic value is entered in a column
  var columnNumberToWatch = /* column D */ 4; // column A = 1, B = 2, etc.
  var valueToWatch = "yes";
  var sheetNameToMoveTheRowTo = "LOG";

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet2");
  var cell = sheet.getActiveCell();

  if ( sheet.getName() != sheetNameToMoveTheRowTo && cell.getColumn() == columnNumberToWatch
      && cell.getValue().toLowerCase() == valueToWatch) {
    if (cell.getColumn() == 2 && cell.getValue() == "Validate") {  
      var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
      var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
      sheet.getRange(cell.getRow(), 1, 1,  sheet.getLastColumn())
        .copyTo(targetRange);
    }
  }
}

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试使用相同的cell变量监视两个单独的位置。首先,将cell初始化为活动单元格,然后检查该列是否为#4,然后在第二个if语句中,使用cellgetColumn2。

也许创建一组新的变量以用于验证检查:

var activeRow=cell.getRow();
var valCheck=sheet.getRange(activeRow, 2);

然后if语句更改为:

if (valCheck.getValue() == "Validate") {