javascript - Google 脚本 - 合并运算符语法在 IF 语句中不起作用

标签 javascript google-apps-script google-sheets operators

上下文

我希望下面的 onEdit(e) 函数能够根据单元格的新值和旧值从电子表格中添加或删除行。这需要 IF 语句中的 OR (||) 运算符来检查值。下面是我的第一次尝试,虽然有效,但导致了一些奇怪的行为,例如在一次编辑后行出现然后消失(第二个 IF 语句),每当我按下“删除”键时就会出现两行,等等:

function onEdit(e) {
  var range = e.range;
  var newValue = e.value;
  var oldValue = e.oldValue;
  var targetRow = range.getRow();

//insert 2 rows if edited cell value = "a" or "b"
  if (newValue === "a" || "b") {
    sheet.insertRowsAfter(targetRow, 2);
  } 

//delete 2 rows if former cell value was "a" or "b"
  if (oldValue === "a" || "b") {
    sheet.deleteRows(targetRow + 1, 2);
  }
}

当前使用的应用程序

  1. Google 表格
  2. Google Apps 脚本

到目前为止我尝试过的

当我更改 IF 语句以在每个 OR 运算符之后重新声明变量时,干净地生成了所需的结果:

if (newValue === "a" || newValue === "b") {
    sheet.insertRowsAfter(targetRow, 2);
  } 
  if (oldValue === "a" || oldValue === "b") {
    sheet.deleteRows(targetRow + 1, 2);
  }

问题

是否有一种统一的形式来编写这些语句,以继续产生所需的结果?当我继续编写这个函数时,这些 IF 语句可能会变得更加复杂,并且需要使用 OR 和 AND 运算符检查相同的变量。为每个运算符只声明一次变量名会容易得多。

回顾一下:

我希望能够编写代码的统一格式,如第一个代码片段所示:

if (newValue === "a" || "b") { //etc...

但是,它只有在较长版本中编写时才能正常工作:

if (newValue === "a" || newValue == "b") { //etc...

谢谢!

最佳答案

您可以使用 switch 语句来合并。

switch (newValue) {
  case "a":
  case "b":
    sheet.insertRowsAfter(targetRow, 2);
    break;
  default:
}

如果需要,您可以在其中添加更多案例以“或”整体条件。

关于javascript - Google 脚本 - 合并运算符语法在 IF 语句中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34381724/

相关文章:

javascript - Ionic - 选择后隐藏 iOS 选择轮(选择选项)

r - 在 `googleAuthR` 中使用来自 `googlesheets` 的 token

google-sheets - Google 表格跳转到单元格

javascript - 带有流类型注释的混合

javascript - React Native - PropTypes.bool 中的 "Cannot read property ' bool' 未定义

javascript - 创建基本的 Google 脚本来复制 SS 并保存到我的驱动器上的特定文件夹

google-apps-script - 以 "unlisted"模式在 GSuite 市场上发布附加组件

regex - 如何在 Google 文档文本编辑器中使用正则表达式查找和替换?

javascript - 如何使用 YouTube API 将视频观看次数获取到 Google 电子表格中?

javascript - 为什么这些对象有不同的构造函数?