如果列中的状态更改,则复制行数据

时间:2016-11-15 14:19:54

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

我的功能应该检查第8列的其中一种状态,尽管它似乎不起作用。

检查以确保它是"购买表",并检查"仪表板"上是否存在该购买,但它只应复制如果我在"第8列和第34页中编辑状态,则该行;以下之一"是"," no","重复"或"已售出"。

我哪里出错?

function copyRow() {
    var purchasedColumn = 8; //- column A = 1, B = 2, etc...
    var targetRange = targetDashboardSheet.getRange(targetDashboardSheet.getLastRow() + 1, 1);

    if (purchaseSheet && range.getColumn() == purchasedColumn && ["Yes", "No", "Repeat", "Sold"].indexOf(range.getValue()) > -1 && taskDashboardRange === -1) {
        sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange);
    }
}

我不相信这一点有效

range.getColumn() == purchasedColumn && ["Yes", "No", "Repeat", "Sold"].indexOf(range.getValue()) > -1

更新

我意识到我有一个单独的功能干扰了copyRow功能。所以我的代码实际上正在工作,然后被另一个crossUpdate函数覆盖。

感谢您的帮助,我们一直很感激。

1 个答案:

答案 0 :(得分:1)

尝试此操作并在运行调试后查看日志。您应该看到一个行号列表以及该单元格与测试匹配的行的值。我只测试了是和否。我也将我的范围限制在你要检查的列中。您可以将其扩展到整行,以便设置为复制该行。

function copyRow() {
  var targetDashboardSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var purchasedColumn = 8; //- column A = 1, B = 2, etc...
  var targetRange = targetDashboardSheet.getRange("H1:H");
  var values = targetRange.getValues();

  for (i in values) {
    if (values[i][0] === "Yes" || values[i][0] === "No") {
      Logger.log("row: " + i + " Value: " + values[i][0]);  
    }
  }

}