使用 Google Sheets 脚本,为什么我的 if 语句在比较单元格值时总是返回 false?

2023-12-13

我需要比较两个单元格值并在它们不同时对其采取行动。然而,在比较单元格内容时,我的“if”语句总是返回 false,我不明白为什么:

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1'); // apply to sheet name only 
  var testvalues = sheet.getRange('A1:A2').getValues(); // array of values to be tested
  var testvalue1 = testvalues[0]; // The contents from A1
  var testvalue2 = testvalues[1]; // The contents from A2
  var test1 = testvalue1 == testvalue2; // True False test
  var test2 = testvalue1 === testvalue2;// True False test
  Browser.msgBox(testvalue1 + " and " + testvalue2 + " being the same is " + test1 + " and " + test2); // Sentence revealing outcome
};

无论单元格 A1 和 A2 的内容是什么(空、数字、文本、不同),test1 和 test2 始终返回 false。如果我将测试值编辑为:

  var testvalue1 = "We are the same value";
  var testvalue2 = "We are the same value";

or

  var testvalue1 = testvalues[0];
  var testvalue2 = testvalues[0];

然后突然测试都按预期返回 True。谁能告诉我我在这件事上错过了什么,这太令人愤怒了?目前 A1 和 A2 中的值是 1(在我可能被问到这个问题之前)。

最终目标是使用边框来划分不同的单元格内容。我的其余部分工作得很好,但我已将问题与上述概念隔离开来。


Answer:

The .getValues()方法返回一个二维数组,因此您没有在数组中正确引用每个单元格内的值。

更多信息:

我们假设两者A1 and A2包含字符串"THIS"。 运行以下行:

var testvalues = sheet.getRange('A1:A2').getValues();

将分配数组[[THIS], [THIS]] to testvalues.

代码修复:

你需要改变:

var testvalue1 = testvalues[0]; // The contents from A1
var testvalue2 = testvalues[1]; // The contents from A2

to:

var testvalue1 = testvalues[0][0]; // The contents from A1
var testvalue2 = testvalues[1][0]; // The contents from A2

参考:

  • Class Range| Apps 脚本 - 方法getValues()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Google Sheets 脚本,为什么我的 if 语句在比较单元格值时总是返回 false? 的相关文章

随机推荐

  • VSTS 嵌套变量

    我正在尝试实现一个级联变量 当设置一个设计时变量时 它会级联到其他变量 这可能吗 我尝试过使用点表示法 尝试过不使用点表示法 并且尝试在任务中执行此操作 我也尝试过这个任务插件 但我的代理使用的是 2 0 并且任务无法运行 变量工具箱任务
  • 从代码隐藏文件中检查 CheckBoxField

    看来 CheckBoxField 不接受 ID 属性 因此我无法直接调用代码隐藏文件中的组件
  • Web 应用程序如何向 iOS 设备发送推送通知? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在开发一个网络应用程序 当有新内容时 如何向 iOS 用户发送推送通知 更具体地说 为了让 Web 应用程序向移动设备 例如 iPhone 发送推送通知 移动设备必须已注册才
  • 使用多处理时 Python 实例变量未更新

    我在更新变量方面遇到了一个不寻常的问题 我构建了一个简单的类对象来帮助我进行一些网络嗅探 我想要创建一个并行进程 它允许我运行一些网络测试并捕获使用 python 生成的流量 这样我就可以扩展程序来完成令人惊奇的事情 我正在使用 scapy
  • 如何使用外部 api 访问令牌而不将其暴露给用户?

    很抱歉 如果这可能是一个微不足道的问题 但我想确定一下 但无法在网上找到明确的答案 我正在编写一个使用 Mapbox 的小应用程序 并且我正在使用反应地图GL为了它 他们需要客户端的访问令牌 因此他们建议使用环境变量 我的问题是 是否可以简
  • 围绕轮廓对象生成颜色直方图

    嘿 OpenCV Emgu 大师们 我有一张正在为其生成轮廓的图像 请参见下文 我正在尝试生成基于颜色直方图的图像搜索空间修剪以查找 如何使蒙版仅围绕突出的物体轮廓并遮挡其余部分 所以我有一个由两部分组成的问题 如何 反转 轮廓外的图像 漫
  • 如何使用 Python 创建一个流式传输在线广播的 Discord 机器人

    正如标题所提到的 我该怎么做呢 到目前为止 我花了几个小时试图找到答案 但由于这不是一个受欢迎的请求 因此没有任何相关内容 我发现的大部分内容只是使用 youtube dl 下载 yt 音频并播放它 编辑 更新以使用FFmpegPCM音频流
  • 从文件中解析逗号分隔的 JSON

    我正在读取一个包含用逗号分隔的 JSON 的文件 例如 JSON JSON JSON 我确定它们是用逗号分隔的 但不确定它们是用换行符分隔的 该 JSON 可能全部位于一行 但可以肯定的是它们是用逗号分隔的 我还没有收到该数据 我想知道如何
  • 当数组包含日期时,从 Firestore 中删除数组项不起作用

    我花了几天时间研究这个问题 包括各种答案 例如 Firebase Firestore 从文档数组中追加 删除项目以及我之前的问题 从 Firestore 中删除数组项但无法弄清楚如何真正使其发挥作用 事实证明 问题在于对象中存在日期属性 如
  • WPF - ItemTemplate 未按预期运行

    我有一个UserControl我用它来显示列表UIElement是 该控制由一个单一的ItemsControl与它的ItemPanelTemplate切换为水平StackPanel its ItemsSource绑定到一个Dependenc
  • 插入表变量 CTE

    如何将 cte 的结果插入到表变量中 像这样的东西吗 DECLARE myData TABLE Title nvarchar 350 NOT NULL Id int NOT NULL INSERT INTO myData with CTE
  • 在所有窗口之上运行 hta

    我有一个 HTML 应用程序 我想保留在所有窗口的顶部 也就是说 如果打开 切换到另一个窗口 我希望这个窗口覆盖它 JavaScript 解决方案在 Windows 7 IE9 模式下不起作用 不确定是什么阻碍了它 也无法更改 而 VBSc
  • 没有表的映射关联的 Hibernate 标准投影

    我有 2 张桌子说 表1和表2 现在 Table1 有 3 列 即 t1 t2 t3 Table2 有 2 列 t4 和t5 我必须通过联接从两个表中获取数据 但注释或 xml 中的两个表之间没有映射关联 现在的主要问题是我必须使用休眠投影
  • 在 Visual Studio 2017 .NET Core 项目中支持 Roslyn 分析器(.ruleset)

    如何在 Visual Studio 2017 NET Core 项目中添加对 Roslyn 分析器 ruleset 的支持 在 project json 中 它是通过使用配置的buildOptions buildOptions additi
  • Varchar 或 Text 数据类型,字符串长度最多为数千个字符

    我有一个小型社交网站 包含帖子和评论 我决定让用户使用他们想要的任意数量的字符创建帖子 我认为存储此类内容的最佳数据类型是Text 但对于评论 大多数情况下用户只写一行或几行文字 这就是为什么我认为我必须将注释字符串长度限制为最大 3000
  • 从 C# 关闭最小化/图标化进程

    这是我的问题 我需要从 C 程序关闭一个已经运行的进程 问题是该进程现在作为图标运行 最小化到任务栏 除非用户至少打开它一次 这在无人值守的计算机上永远不会发生 否则它永远不会 有一个主窗口 我的另一个要求是应用程序是closed not
  • 尽可能均匀地分配数量

    我们有一定的数量 例如300 单位 该数量应尽可能均匀地分布在 40 个 槽 上 如果每个槽都相同 那就很容易了 所以每个槽都是 7 5 然而 插槽的大小各不相同 我们不能 填充 超过其 大小 允许的范围 例如如果只有 5 个 我们无法 填
  • 有没有直接的方法将 Informix 上的 Unix 时间转换为 YYYY-MM-DD HH:MM:SS?

    我知道使用 PHP 或 Perl 可以轻松完成类似的事情 但我想知道是否有一种方法可以直接在 Informix 上完成 例如函数FROM UNIXTIME 在 MySQL 上 我认为你可以使用 dbinfo 和 utc to datetim
  • 使用php将mysql表列表从mysql导出到csv文件

    我想知道是否有人可以向我展示一个示例 PHP 代码 说明如何将 MySQL 数据库中的大约 50 个表导出到 CSV 文件 我的数据库名称是 samples 该数据库下有大约 49 个表 我希望该数据库下的每个表 大约有 20 00 行 导
  • 使用 Google Sheets 脚本,为什么我的 if 语句在比较单元格值时总是返回 false?

    我需要比较两个单元格值并在它们不同时对其采取行动 然而 在比较单元格内容时 我的 if 语句总是返回 false 我不明白为什么 function onEdit var ss SpreadsheetApp getActiveSpreadsh