如果退回Google Apps脚本GoogleSheets

时间:2018-04-30 18:28:20

标签: javascript google-apps-script

我有一个简单的应用程序监视电子表格上的标签上的活动(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上发生的事情。

如何让它停止查看两张纸?

由于

1 个答案:

答案 0 :(得分:2)

sheetNameSheet1Sheet2作为工作表名称时,您希望运行sheetName。如果我的理解是正确的,那么这个修改怎么样?

修改要点:

  • 在您的脚本中,Sheet1是字符串。关于Sheet2var Sheet1 = ss.getSheetByName("Sheet1"),在运行var Sheet2 = ss.getSheetByName("Sheet2")Sheet1之前,这些是字符串。但是在运行这些之后,Sheet2if (sheetName == Sheet1 || sheetName == Sheet2) return;将成为Sheet的对象。此时,在sheetName = "Sheet","字符串"和"对象"比较。这样,你想要的比较就无法进行。如果你想检索" true"通过此比较,您可以通过更改为sheetName来完成此操作。但我不认为这是你想要的。所以为了解决这个问题,我认为2种模式适合你的情况。请检查它们并选择您想要的图案。

模式1

Sheet1Sheet2var sheetName = sheet.getName(); if (sheetName == "Sheet1" || sheetName == "Sheet2") return; 进行比较,这些是工作表名称。

修改后的脚本:

sheet

模式2

虽然我不确定您问题中sheet.getName()的{​​{1}},但是如果您想确认Sheet1Sheet2之后是否需要比较表格存在于活动电子表格中,请修改如下。

修改后的脚本:

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也是一样的。

如果我误解了你的问题,我很抱歉。