【问题标题】:Copy row data if status in column changes如果列中的状态发生更改,则复制行数据
【发布时间】:2016-11-15 14:19:54
【问题描述】:

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

它会检查以确保它是“采购单”,并检查“仪表板”上是否存在该购买,但如果我在“列”中编辑状态,它只会复制该行8”到以下“是”、“否”、“重复”或“已售出”之一。

我哪里出错了?

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 函数覆盖。

感谢您的帮助,我们始终不胜感激。

【问题讨论】:

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


    【解决方案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]);  
        }
      }
    
    }
    

    【讨论】:

    • 对不起,我意识到我有一个单独的函数干扰了 copyRow 函数。所以我不能将你的答案标记为“答案”。
    猜你喜欢
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2021-08-05
    • 2011-05-25
    • 1970-01-01
    相关资源
    最近更新 更多