更改脚本以将非重复值发送到新工作表而不是重复值

时间:2015-04-26 04:20:35

标签: javascript google-apps-script

我有一个脚本,它遍历2个电子表格,在A列中找到重复的值,然后将这些重复值的行附加到另一个表格。

我实际上希望这个脚本做类似的事情,但是追加不重复的行而不是那些行。如何更改它以便将非重复项发送给"新学生"片&#34 ;?我尝试将==更改为!==。但是这会发送整个列表。我一直在寻找一段时间,我知道这可能很容易解决 非常感谢! 布兰登

function compareandupdate() { 
  var s1 = SpreadsheetApp.openById("XXXXXX-vvxyewdki0J9tGqJl9_f-wZE0zOboQRIscLAA").getSheetByName('Updated Student List');
  var s2 = SpreadsheetApp.openById("XXXXXX-yB9Xm1J5RKWS7NF23vD-NTUeIgspbctj3leW4").getSheetByName('Master Student List');
  var s3 = SpreadsheetApp.openById("XXXXXX-yB9Xm1J5RKWS7NF23vD-NTUeIgspbctj3leW4").getSheetByName('New Students');

  var values1 = s1.getDataRange().getValues();
  var values2 = s2.getDataRange().getValues();
  var resultArray = [];

for(var n=0; n < values1.length ; n++){
    var keep = false;
    for(var p=0; p < values2.length ; p++){
      Logger.log(values1[n][0]+' =? '+values2[p][0]);
      if( values1[n][0] == values2[p][0]){
        resultArray.push(values1[n]);
        Logger.log('true');
        break ;// remove this if values are not unique and you want to keep all occurrences...
      }
    }
  }  
  s3.getRange(+1,1,resultArray.length,resultArray[0].length).setValues(resultArray);
}

2 个答案:

答案 0 :(得分:0)

你可以试试这个

function contains(array, entry) {
  for(var p=0; p < array.length ; p++){
    if(array[p][0] === entry){
      return true;
    }
  }
  return false;
}

for(var n=0; n < values1.length ; n++) {
  if(!contains(values2, values1[n][0])) {
    resultArray.push(values1[n]);
  }
}

答案 1 :(得分:0)

如果您希望保留现有结构(我认为我前段时间写过;-)并且btw有一个不必要的变量(保留)!)您可以使用此修改后的代码版本:

_app.detailsDivInit = function() {
        debugger;
        $( ".slider" ).slider({
        min: 10,
        max: 60,
        step: 1
    })
    .each(function() {
        var opt = $(this).data().uiSlider.options;
        debugger;
        //Get the number of possible values
        var vals = opt.max - opt.min;

      // Space out values
      for (var i = 0; i <= vals; i+=opt.step * 20) {
        debugger;
        var el = $('<label>'+(i + "-" + (i + opt.step*20) )+' <div class="tickMark"></div></label>').css('left',(i/vals*100)+'%');
        $( ".slider" ).append(el);
      } 
    });