根据两个条件将数据行复制到由 ID 或 URL 打开的工作表中



我有一个代码,可以帮助我根据给定列中的条件复制一行数据。我有一个名为"Master"的工作表,其中包含大约 1000 行数据。如果"主"的第 1 列中有"正面"或"负面"一词,我想将一行数据移动到名为"主响应"的工作表中。我在 IF 语句中使用了 or 函数 (||( 来选择条件(即如果输入"正"或"负"(,但只有在第一列中键入"正"时才复制该行。当我在第一列中键入"负数"时,不会复制该行。另外,我想知道如果我必须使用".openByID 或 .openByURL"调用"主响应"表,应该如何修改代码。我已经附上了代码,请随时编辑。我是脚本新手,已经坚持了一个多月。任何帮助将不胜感激。提前谢谢。

function onEdit()
{
  var sheetNamesToWatch = ["Master"];
  var columnNumberToWatch = 1;
  var valuesToWatch = ["Positive"];
  var valuesToWatch1 = ["Negative"];
  var targetSheetsToMoveTheRowTo = ["Master Responses"];
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getActiveCell();
  if(sheetNamesToWatch.indexOf(sheet.getName()) != -1 && 
  valuesToWatch.indexOf(range.getValue()) != -1 || 
  valuesToWatch1.indexOf(range.getValue()) != -1 && range.getColumn() 
  ==columnNumberToWatch)
  {
    var targetSheet = ss.getSheetByName(targetSheetsToMoveTheRowTo[valuesToWatch.indexOf(range.getValue())]);
    var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    sheet.getRange(range.getRow(), 1, 1, 
    sheet.getLastColumn()).copyTo(targetRange);
  }
}

我不确定.openByID或.openByURL,但是这应该可以解决"负"的问题。

我还在第一个 if 语句上添加了额外的括号,以便我清楚它正在检查的内容。

function onEdit()
{
  var sheetNamesToWatch = ["Master"];
  var columnNumberToWatch = 1;
  var valuesToWatch = ["Positive"];
  var valuesToWatch1 = ["Negative"];
  var targetSheetsToMoveTheRowTo = ["Master Responses"];
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getActiveCell();
  if((sheetNamesToWatch.indexOf(sheet.getName()) != -1) && ((valuesToWatch.indexOf(range.getValue()) != -1) || 
  (valuesToWatch1.indexOf(range.getValue()) != -1)) && (range.getColumn() ==columnNumberToWatch))
  {
    if (valuesToWatch.indexOf(range.getValue()) != -1)
    {
      var targetSheet = ss.getSheetByName(targetSheetsToMoveTheRowTo[valuesToWatch.indexOf(range.getValue())]);
    }
    else
    {
      var targetSheet = ss.getSheetByName(targetSheetsToMoveTheRowTo[valuesToWatch1.indexOf(range.getValue())]);
    }

    var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    sheet.getRange(range.getRow(), 1, 1, 
    sheet.getLastColumn()).copyTo(targetRange);
  }
}

相关内容

  • 没有找到相关文章

最新更新