Предотвращение добавления дубликатов на целевой лист - PullRequest
1 голос
/ 25 сентября 2019

Я пытаюсь добавить значения в новую строку целевого листа при каждом нажатии кнопки.Я создал объект для проверки значений целевых листов в указанном столбце.Затем я создал цикл for для проверки добавляемых значений к значениям, уже имеющимся в объекте, для предотвращения дублирования, однако объект выглядит как «нулевой» и не препятствует добавлению дублирующихся строк.

Я попытался создать объект для сравнения новых значений со значениями, уже существующими на целевом листе.Я попытался добавить новый столбец с логическим значением «ИСТИНА» и проверить, равно ли это значение столбца = «ИСТИНА», а затем не добавлять строку.

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
}

Я продолжаю получать те же строкидобавляются, когда они не должны быть добавлены.

1 Ответ

2 голосов
/ 25 сентября 2019

Попробуйте это:

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...