我有一个简单的应用程序监视电子表格上的标签上的活动(onEdit),除了2个标签,称之为'Sheet1'和'Sheet2'。#
代码中的代码段是:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = sheet.getName();
var Sheet1 = ss.getSheetByName("Sheet1");
var Sheet2 = ss.getSheetByName("Sheet2");
if (sheetName == Sheet1 || sheetName == Sheet2) return;
这不起作用,它将监视这些工作表上的更改。通过尝试不同的方法:
if (sheetName == Sheet1) return;
if (sheetName == Sheet2) return;
仍然无效。
但是,当我尝试一个时,例如:
if (sheetName == Sheet1) return;
然后它不会监视Sheet1上发生的事情。
如何让它停止查看两张纸?
由于
答案 0 :(得分:2)
当sheetName
为Sheet1
或Sheet2
作为工作表名称时,您希望运行sheetName
。如果我的理解是正确的,那么这个修改怎么样?
Sheet1
是字符串。关于Sheet2
和var Sheet1 = ss.getSheetByName("Sheet1")
,在运行var Sheet2 = ss.getSheetByName("Sheet2")
和Sheet1
之前,这些是字符串。但是在运行这些之后,Sheet2
和if (sheetName == Sheet1 || sheetName == Sheet2) return;
将成为Sheet的对象。此时,在sheetName = "Sheet"
,"字符串"和"对象"比较。这样,你想要的比较就无法进行。如果你想检索" true"通过此比较,您可以通过更改为sheetName
来完成此操作。但我不认为这是你想要的。所以为了解决这个问题,我认为2种模式适合你的情况。请检查它们并选择您想要的图案。 Sheet1
由Sheet2
和var sheetName = sheet.getName();
if (sheetName == "Sheet1" || sheetName == "Sheet2") return;
进行比较,这些是工作表名称。
sheet
虽然我不确定您问题中sheet.getName()
的{{1}},但是如果您想确认Sheet1
和Sheet2
之后是否需要比较表格存在于活动电子表格中,请修改如下。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = sheet.getName();
var Sheet1 = ss.getSheetByName("Sheet1");
var Sheet2 = ss.getSheetByName("Sheet2");
if ((Sheet1 && sheetName == Sheet1.getName()) || (Sheet2 && Sheet2.getName())) return;
Sheet1 &&
的{{1}}用于检查Sheet1 && sheetName == Sheet1.getName()
的存在。 Sheet1
也是一样的。如果我误解了你的问题,我很抱歉。