我正在遍历各个单元格,并希望将其字符串内容添加到数组中(如果内容尚未在数组中)。当我像这样手动尝试将“ 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]),除非您需要检查类型,否则请始终使用==

10-04 16:05