首页 > 解决方案 > 如果返回 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 上发生的事情。

我怎样才能让它停止看两张纸?

谢谢

标签: javascriptgoogle-apps-script

解决方案


你想运行return,when sheetNameisSheet1Sheet2which 是工作表名称。如果我的理解是正确的,那么这个修改呢?

修改点:

  • 在您的脚本中,sheetName是字符串。关于Sheet1and Sheet2, before var Sheet1 = ss.getSheetByName("Sheet1")and var Sheet2 = ss.getSheetByName("Sheet2")are run, 这些是字符串。但是这些都运行了之后,就Sheet1变成Sheet2了Sheet的对象。此时,在 处if (sheetName == Sheet1 || sheetName == Sheet2) return;,比较“字符串”和“对象”。这样,无法进行您想要的比较。如果您想从此比较中检索“真”,您可以通过更改为sheetName = "Sheet". 但我不认为这是你想要的。所以为了解决这个问题,我认为这两种模式适合你的情况。请检查它们并选择您想要的图案。

模式 1

sheetName比较Sheet1Sheet2是工作表名称。

修改后的脚本:

var sheetName = sheet.getName();
if (sheetName == "Sheet1" || sheetName == "Sheet2") return;

模式 2

虽然我不确定您sheetsheet.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也是一样的。

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


推荐阅读