应用脚本 JS 将项目从范围(如果尚未在数组中)添加到数组失败



我正在循环浏览各种单元格,并希望添加它们的字符串内容做一个数组,如果内容尚未在数组中。当我像这样手动执行此操作时,它工作得很好,尝试将"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])中使用===,除非您需要检查类型始终使用==

最新更新