javascript - 如果返回 Google Apps 脚本 GoogleSheets
问题描述
我有一个简单的应用程序,它监视电子表格上选项卡上的活动(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 上发生的事情。
我怎样才能让它停止看两张纸?
谢谢
解决方案
你想运行return
,when sheetName
isSheet1
或Sheet2
which 是工作表名称。如果我的理解是正确的,那么这个修改呢?
修改点:
- 在您的脚本中,
sheetName
是字符串。关于Sheet1
andSheet2
, beforevar Sheet1 = ss.getSheetByName("Sheet1")
andvar Sheet2 = ss.getSheetByName("Sheet2")
are run, 这些是字符串。但是这些都运行了之后,就Sheet1
变成Sheet2
了Sheet的对象。此时,在 处if (sheetName == Sheet1 || sheetName == Sheet2) return;
,比较“字符串”和“对象”。这样,无法进行您想要的比较。如果您想从此比较中检索“真”,您可以通过更改为sheetName = "Sheet"
. 但我不认为这是你想要的。所以为了解决这个问题,我认为这两种模式适合你的情况。请检查它们并选择您想要的图案。
模式 1
sheetName
比较Sheet1
和Sheet2
是工作表名称。
修改后的脚本:
var sheetName = sheet.getName();
if (sheetName == "Sheet1" || sheetName == "Sheet2") return;
模式 2
虽然我不确定您sheet
的sheet.getName()
问题,但如果您想在确认活动电子表格中是否存在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 &&
ofSheet1 && sheetName == Sheet1.getName()
用于检查Sheet1
.Sheet2
也是一样的。
如果我误解了你的问题,我很抱歉。
推荐阅读
- java - 如何在 SAS 9.4 中获得像 OLAPDataSetInterface 这样的对象
- angular - 从 SPA (Angular) 向 ADFS 请求令牌时如何修复 CORS?
- python-3.x - 如何初始化 n 个不同的列表?
- xml - 将 XML 标记转换为 CSV
- character-encoding - 避免使用 http-equiv标签
- python - 使用 python 的 subprocess.Popen() 创建进程时命名进程
- javascript - Cucumber JS:如何在 Given/When/Then 步骤之外导出/更新全局变量?
- sql - 在一个查询中选择不同的子类型值
- reactjs - UseContext 不迭代
- java - 行号错误 = inputLine.nextInt();