【问题标题】:Else If - Google Script否则如果 - 谷歌脚本
【发布时间】:2021-05-04 14:31:24
【问题描述】:

此脚本之前在我的 Google 表格上运行,然后突然停止运行。我注意到第一个参数 (if) 有效,但之后的所有代码都无效。有什么想法吗?

function onEdit(event) {
  // assumes source data in sheet named Sheet1
  // target sheet of move to named Sheet2
  // test column with yes is col 7 or G
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Under Contract Response Form" && r.getColumn() == 7 && (r.getValue() == "Closed" || r.getValue() == "Expired" || r.getValue() == "Cancelled")) {
  var row = r.getRow();
  var numColumns = s.getLastColumn();
  var targetSheet = ss.getSheetByName("Closed/Expired & Cancelled");
  var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
  s.getRange(row, 1, 1, numColumns).copyTo(target);
  s.deleteRow(row);
  } else if(s.getName() == "Listing Response Form" && r.getColumn() == 7 && r.getValue() == "Pending" ) {
  var row = r.getRow();
  var numColumns = s.getLastColumn();
  var targetSheet = ss.getSheetByName("Under Contract Response Form");
  var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
  s.getRange(row, 1, 1, numColumns).copyTo(target);
  s.deleteRow(row);
   } else if(s.getName() == "Listing Response Form" && r.getColumn() == 7 && r.getValue() == "Cancelled" ) {
  var row = r.getRow();
  var numColumns = s.getLastColumn();
  var targetSheet = ss.getSheetByName("Closed/Expired & Cancelled");
  var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
  s.getRange(row, 1, 1, numColumns).copyTo(target);
  s.deleteRow(row);
  } else if(s.getName() == "Under Contract Response Form" && r.getColumn() == 7 && (r.getValue() == "Pre-list" || r.getValue() == "Withheld" || r.getValue() == "Coming Soon" || r.getValue() == "Active")) {
  var row = r.getRow();
  var numColumns = s.getLastColumn();
  var targetSheet = ss.getSheetByName("Listing Response Form");
  var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
  s.getRange(row, 1, 1, numColumns).copyTo(target);
  s.deleteRow(row);
  } else if(s.getName() == "Closed/Expired & Cancelled" && r.getColumn() == 7 && r.getValue() == "Pending" ) {
  var row = r.getRow();
  var numColumns = s.getLastColumn();
  var targetSheet = ss.getSheetByName("Under Contract Response Form");
  var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
  s.getRange(row, 1, 1, numColumns).copyTo(target);
  s.deleteRow(row);
  }
}

【问题讨论】:

  • 欢迎来到Stack Overflow。请添加minimal reproducible example。在此具体包括工作表名称并添加console.log 语句。另外请记住,编辑触发器上的getActive... 方法可能会导致问题,特别是如果用户在激活另一个范围之前没有等待脚本完成它的执行。

标签: if-statement google-apps-script google-sheets triggers


【解决方案1】:

脚本看起来不错,因此很可能一张或多张工作表已重命名,或者插入或删除了列。检查工作表名称并查找诸如前导或尾随空格之类的内容。还要确保应该触发行移动的值出现在 G 列中。

您可以通过使用列 names 而不是列 numbers 使行移动更加稳健。请参阅moveRowsFromSpreadsheetToSpreadsheet_ 脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2017-12-21
    • 1970-01-01
    相关资源
    最近更新 更多