我正在循环遍历各种单元格并希望添加其字符串内容做一个数组,如果内容不在数组中。当我手动这样做时,它完全正常,试图将'eJobs'添加到数组中(见下面的“var item ='eJobs'),它已经包含了'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')。
答案 0 :(得分:1)
代码正在运行,日志文件指示问题是什么..
[eJobs, eJobs, BestJobs, Vivre Deco,
在第二个eJobs中,eJobs之前有一个空格,因此第一个值和第二个值不匹配。
在没有查看您的数据的情况下,只需使用一个单词&#39;我会说在文本字符串上使用.replace(" ", "")
应该可行,这将找到第一个&#34; &#34;在字符串中删除它。即&#34; eJobs&#34;会成为&#34; eJobs&#34;。
2
这行代码是否仅用于测试?你永远不应该在脚本中使用这样的方法。这将是非常低效的
var item = sheet_pods_edit.getRange(startRow+k, startColumn+1).getValue();
而是使用.getValues()
获取整个范围,然后迭代它。
3
您是否有理由在===
中使用if (podarray[j] === row_edit[0])
,除非您需要检查类型,请始终使用==