我正在遍历各个单元格,并希望将其字符串内容添加到数组中(如果内容尚未在数组中)。当我像这样手动尝试将“ eJobs”添加到已经包含“ eJobs”的数组(请参见下面的“ var item ='eJobs”)时,它的工作原理非常好:
var divisionarray = ['eJobs']
for (var i = 0; i < cells_users.length-1; ++i) {
var row_users = cells_users[i];
if (row_users[0] == user_ldap) {
var podarray = row_users[1].split(', ')
for (j = 0; j < podarray.length; j++) {
for (var k = 0; k < cells_edit.length; ++k) {
var row_edit = cells_edit[k]
if (podarray[j] === row_edit[0]) {
var item = 'eJobs'
if (!(divisionarray.indexOf(item) >= 0)) {
divisionarray.push(item)
}
}
}
}
Logger.log(divisionarray)
正如预期的那样,该日志文件显示[17-10-08 19:11:04:111 BST] [eJobs],说明该代码有效,并且尚未将'eJobs'添加到该阵列中,因为它已经在该阵列中。
现在,当我将var item ='eJobs'更改为某个范围的值时
var item = sheet_pods_edit.getRange(startRow+k, startColumn+1).getValue();
该代码不再起作用,如日志文件所示:
[17-10-08 19:14:03:770 BST] [eJobs, eJobs, BestJobs, Vivre Deco, ...
注意我有成千上万个单元格,所以我添加了很多重复项。我想念什么?请注意,所定义范围的单元格实际上只是带有单个单词的字符串(例如“ eJobs”)。
最佳答案
该代码正在运行,并且日志文件指出了问题所在。
[eJobs, eJobs, BestJobs, Vivre Deco,
在第二个eJob中,在eJob之前有一个空格,因此第一个值和第二个值不匹配。
在不查看数据的情况下,我只能说在文本字符串上使用
.replace(" ", "")
应该可以,它将在字符串中找到第一个“”并将其删除。即“ eJobs”将变为“ eJobs”。2。
这行代码仅用于测试吗?您永远不要在脚本中使用这样的方法。效率极低
var item = sheet_pods_edit.getRange(startRow+k, startColumn+1).getValue();
而是使用
.getValues()
获取完整范围,然后对其进行迭代。3。
您是否有理由在
===
中使用if (podarray[j] === row_edit[0])
,除非您需要检查类型,否则请始终使用==