我正在循环浏览各种单元格,并希望添加它们的字符串内容做一个数组,如果内容尚未在数组中。当我像这样手动执行此操作时,它工作得很好,尝试将"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,
在第二个电子作业中,电子作业之前有一个空格,因此第一个值和第二个值不匹配。
在没有看到您的数据的情况下,我会说在文本字符串上使用.replace(" ", "")
应该可以,这将在字符串中找到第一个" "并将其删除。即"电子工作"将变为"电子工作"。
阿拉伯数字。
这行代码只是为了测试吗?切勿在脚本中使用此类方法。效率极低
var item = sheet_pods_edit.getRange(startRow+k, startColumn+1).getValue();
而是使用 .getValues()
获取完整范围,然后对其进行迭代。
3.
您是否有理由在if (podarray[j] === row_edit[0])
中使用===
,除非您需要检查类型始终使用==