【发布时间】:2021-03-26 02:28:21
【问题描述】:
上下文
在用于 gsheets 的谷歌应用程序脚本中,我正在运行此函数,该函数根据 2 列中的项目名称和 ID 列表在每行单个单元格内搜索逗号分隔列表中的项目名称。
该函数在另一个函数中调用,该函数遍历数据表中的每一行数据。
目标是用逗号分隔列表中的 id 替换名称。
问题
嵌套循环没有运行!当我设置训练输出以测试代码被阻塞的位置时,它位于内部 for 循环中,它在该行中断并且根本不执行。我不知道为什么会这样,因为我看不出我的语法有问题。
请问有什么我可能出错的地方吗?
数据如下所示:
Item Directory Table:
Item ID | Item Name
--------------------
1234 | Item 1
46976 | Item 2
3526 | Item 3
32255 | Item 4
425 | Item 5
Data table:
Data Name | Items
--------------------
Row 1 | Item 1, Item 2, Item 5
Row 2 | Item 5, Item 2
Row 3 | Item 4
Row 4 |
Row 5 | Item 1
期望的输出:
Row 1 = [1234, 46976, 425] // updated item 2
Row 2 = [425, 46976]
Row 3 = [32255]
Row 4 = []
Row 5 = [1234]
这是我的功能:
function findItems(x) {
var items = [];
var j = 0;
var i = 0;
var itemNames = Items.getRange(2 ,11).getValue().split(', ');
var itemIDs = Items.getRange(3 ,11).getValue().split(', ');
if (data.getRange(x, 6).getValue() != '') {
items = data.getRange(x, 6).getValue().split(', ');
for (i = 0; i < items.length; i++) {
output.getRange(2, 1).setValue(items[i]);
for (j = 0; j < itemNames.length; j++) {
if (items[i] === itemNames[j]) {
items[i] = itemIDs[j];
}
}
}
}
return items
}
【问题讨论】:
-
如果内部循环没有执行,则意味着for循环的条件部分不满足。
-
我不反对 GAS,但我认为在您的情况下,谷歌公式会更合适,除非您没有其他选择而不是使用 GAS。
-
使用将项目名称转换为 ID 和单个循环的对象很容易获得所需的输出
-
如果您的问题得到解决,请按接受按钮。与您有相同问题的其他人也可以将您的问题作为可以解决的问题。如果找不到按钮,请随时告诉我。 stackoverflow.com/help/accepted-answer
标签: javascript for-loop google-apps-script google-sheets nested-loops