首页 > 解决方案 > 如何检查工作表 A 和 B 是否是同一张工作表?

问题描述

因此,我试图通过最初检查修改后的单元格是否甚至在正确的工作表中来优化我的工作表 onEdit 功能,如下所示:

var spreadsheet1 = ss.getSheetByName("ONE")
var spreadsheet2 =  ss.getSheetByName("TWO")

function onEdit(e) {

  let range = e.range
  
  Logger.log("Starting onEdit")

  Logger.log("Range: " + range.getSheet().getSheetId().toString())
  Logger.log("spreadsheet1: " + spreadsheet1.getSheetId().toString())
  Logger.log("spreadsheet2: " + spreadsheet1.getSheetId().toString())

  Logger.log("Is spreadsheet1 :" + range.getSheet().getSheetId() == spreadsheet1.getSheetId())
  Logger.log("Is spreadsheet2:" + range.getSheet().getSheetId() == spreadsheet2.getSheetId())
  
  if (range.getSheet().getSheetId() == spreadsheet1.getSheetId() ||
      range.getSheet().getSheetId() == spreadsheet2.getSheetId())
  {
    do stuff
  }

日志如下所示:

Oct 12, 2021, 2:12:54 PM    Info    Starting onEdit
Oct 12, 2021, 2:12:54 PM    Info    Range: 78085800
Oct 12, 2021, 2:12:54 PM    Info    spreadsheet1: 78085800
Oct 12, 2021, 2:12:54 PM    Info    spreadsheet2: 514624715
Oct 12, 2021, 2:12:54 PM    Info    Is spreadhseet1: false
Oct 12, 2021, 2:12:54 PM    Info    Is spreadsheet2: false

这两个条件之一应该返回 true 并且 if 应该被评估为 true 但由于某种原因它不起作用!

标签: google-apps-scriptgoogle-sheets

解决方案


问题出在你的记录器上。目前,它将两个字符串加在一起并将它们与第三个字符串进行比较。因此,正在比较的内容如下所示:

"Is spreadsheet1 :78085800" == "78085800"

这显然是错误的,所以只需要使用括号来改变操作的顺序。尝试将记录器更新为以下内容:

Logger.log("Is spreadsheet1: " + (range.getSheet().getSheetId() == spreadsheet1.getSheetId()))
Logger.log("Is spreadsheet2: " + (range.getSheet().getSheetId() == spreadsheet2.getSheetId()))

推荐阅读