首页 > 解决方案 > 防止将重复项附加到目标工作表

问题描述

每次单击按钮时,我都试图将值附加到目标工作表的新行上。我创建了一个对象来检查指定列的目标工作表值。然后,我创建了一个 for 循环来检查附加的值与对象中已有的值,以防止重复,但是该对象显示为“null”并且不会阻止附加重复的行。

我尝试创建一个对象来将新值与目标表中已经存在的值进行比较。我尝试使用布尔值“TRUE”附加一个新列,并检查该列的值是否=“TRUE”,然后不要附加该行。

function sendToOutreach() {
  var ss = SpreadsheetApp.openById('someid')
  var sheet = ss.getSheetByName('39')
  var outreachSheet = SpreadsheetApp.openById('anotherid')
  var outreachTab = outreachSheet.getSheetByName("Sheet1")
  var tab = ss.getSheetByName(sheet)
  var range = sheet.getRange('A2:O' + sheet.getLastRow()).getDisplayValues()
  var rx = outreachTab.getRange('c2:c' + outreachTab.getLastRow()).getDisplayValues()

  var targetRange = outreachSheet.getRange('A2:Q' + outreachSheet.getLastRow()).getDisplayValues()
  var timestamp = Utilities.formatDate(new Date(),"CST","MM/dd/yyyy HH:mm:ss")
  var user =  Session.getActiveUser()
  var object = createObject(targetRange)
  Logger.log(object)
  for (var a = 0; a<range.length;a++){
    if(!object[[a][0]]){
      var checkCode = range[a][14]
      if(checkCode == 'reason'||checkCode == 'reason'||checkCode == 'reason'||checkCode == 'reason'|| checkCode == 'reason'){
        var Info = ([user,timestamp,range[a][0],range[a][1],range[a][2],range[a][3],range[a][4],range[a][5],range[a][6],range[a][7],range[a][9],
                            range[a][10],range[a][11],range[a][12],range[a][13],range[a][14]])
        outreachSheet.appendRow(Info)

      }
    }
  }
}

function createObject (range) {
  var object = {}
  for(var c=0;c<range.length;c++){
    var rx = range[c][2]
    if(!object[rx]){
      object[rx] = {"rx":rx}
    }
  }
  return object
}

当不应该附加它们时,我不断地附加相同的行。

标签: javascriptobjectgoogle-apps-script

解决方案


尝试这个:

function sendToOutreach() {
  var ss = SpreadsheetApp.openById('someid')
  var sheet = ss.getSheetByName('39')
  var outreachSheet = SpreadsheetApp.openById('anotherid')
  var outreachTab = outreachSheet.getSheetByName("Sheet1")
  var tab = ss.getSheetByName(sheet)
  var range=sheet.getRange(2,1,sheet.getLastRow()-1,15).getDisplayValues();
  var rx=outreachTab.getRange(2,3,outreachTab.getLastRow()-1,1).getDisplayValues();
  var targetRange=outreachSheet.getRange(2,1,outreachSheet.getLastRow()-1,17).getDisplayValues();
  var timestamp = Utilities.formatDate(new Date(),"CST","MM/dd/yyyy HH:mm:ss")
  var user =  Session.getActiveUser()
  var object = createObject(targetRange)
  Logger.log(object)
  for (var a=0; a<range.length;a++){
    if(!object[range[a][0]]){
      var checkCode = range[a][14]
      if(checkCode == 'reason'||checkCode == 'reason'||checkCode == 'reason'||checkCode == 'reason'|| checkCode == 'reason'){
        var Info = ([user,timestamp,range[a][0],range[a][1],range[a][2],range[a][3],range[a][4],range[a][5],range[a][6],range[a][7],range[a][9],
                            range[a][10],range[a][11],range[a][12],range[a][13],range[a][14]])
        outreachSheet.appendRow(Info)

      }
    }
  }
}

function createObject (range) {
  var object={};
  for(var c=0;c<range.length;c++){
    if(!object.hasOwnProperty(range[c][2])) {
      object[range[c][2]]=c+1;
    }
  }
  return object
}

推荐阅读