首页 > 解决方案 > 如果 Google 脚本中的 AND 语句根据一个单元格中的更改和另一个单元格中的值将数据移动到另一张表

问题描述

好的,我在这方面还很陌生。我有一个谷歌电子表格,我填充然后运行一个脚本来创建表单来完成任务。我的最终用户将任务标记为已完成。我希望电子表格中的条目更改为是并且是验证任务以复制到另一张工作表(日志)。如果我只有一个观察者是的,我可以复制条目,但是在将另一个 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);
    }
  }
}

标签: google-apps-scriptgoogle-sheets

解决方案


看起来您正在尝试使用相同的cell变量查看两个不同的位置。首先初始化cell为活动单元格,然后检查列是否为 #4,然后在第二个if语句中使用cell2 getColumn

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

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

然后if语句更改为:

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

推荐阅读