【发布时间】:2018-05-01 11:33:30
【问题描述】:
我创建了一个新项目,该项目应将 Sheet1 中的名称与 Sheet2 中的名称列表进行比较,并检查该名称是否已在该列表中。为此,我选择了一个 for 循环来遍历 Sheet2 中的列表,并将每个列表条目与 Sheet1 中的名称进行比较。只有名称已经存在于列表中时才会发生。
function myFunction() {
var tabSheet1 = 'Sheet1';
var tabSheet2 = 'Sheet2';
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName(tabSheet1);
var sheet2 = ss.getSheetByName(tabSheet2);
var lastRow1 = sheet2.getLastRow() + 1;
var playerNameSheet1 = sheet1.getRange(1, 1).getValue();
for (var j = 1; j < lastRow1; j++) {
var playerNameSheet2 = sheet2.getRange(j, 1).getValue();
if (playerNameSheet2 == playerNameSheet1) {
...stuff...
}
}
}
现在我的问题是脚本似乎无法识别列表中已存在的名称。两个值(playerNameSheet1 和 playerNameSheet2)完全相同(没有空格或其他隐藏障碍),但是脚本永远不会继续 if 语句中的内容。我测试脚本的示例名称是“Oliver Baumann”。
我对此有点困惑 - 甚至更多,因为稍后在脚本代码中进行的另一个比较工作正常。
我已经尝试将运算符更改为 === 但这也不起作用。
if (playerNameSheet2 === playerNameSheet1) {
...stuff...
}
我还观察到,如果我在两个变量后面加上一个点,我只能使用 playerNameSheet2 选择更多函数,而不能使用 playerNameSheet1。也许我打错字了,我太瞎了,看不见?我不知道。有人知道如何解决这个问题吗?
完整的项目可以在here找到。但是,很多东西都是德语的,而且非常简陋。我刚开始,还没有时间清理它。只是为了让您不要怀疑。
【问题讨论】:
-
我会检查 playerNameSheet1 是否设置正确:
Logger.log(Utilities.formatString("[%s]", playerNameSheet1))另外,我会记录每个 playerNameSheet2 以重新检查比较在做什么 -
您是否尝试在 if 条件之外记录
playerNameSheet2和playerNameSheet1以检查 if 条件失败的原因? -
@Umair 是的,我已经检查过了。但是,在 tehhowch 的帮助下,我现在完全重复了我的代码,它可以工作了。
标签: javascript if-statement google-apps-script