【问题标题】:How to get sorted unique values from all the values of a column in Google spreadsheet using javascript如何使用javascript从Google电子表格中列的所有值中获取排序的唯一值
【发布时间】:2017-09-04 09:39:58
【问题描述】:

我需要帮助来获取特定列(B 列)的唯一排序值列表。

这是我的尝试(它不起作用),你能帮我找出错误吗?

我无法获得 [object] 格式的正确范围...

function onlyUnique(value, index, self) { 
return self.indexOf(value) === index;
}  

function UniqueRange()  {
var s = SpreadsheetApp.getActiveSpreadsheet();
var sht = s.getSheetByName('Prova')
var drng = sht.getDataRange();
var rng = sht.getRange(2,2, drng.getLastRow()-1,1);
var rngA = rng.getValues();
var shtout = s.getSheetByName('Nuovo');
var rngout = shtout.getRange(2,1,rngA.length,1)
var rngB = rngout.setValues(rngA);
var i = 0; i < rngA.length; i++
var rngB = rngB[i];  
var unique = rngB.filter( onlyUnique ); 
}

Bellian 的解决方案:

function onlyUnique(value, index, self) { 
return self.indexOf(value) === index;
} 
function uniquevalues(){
var s = SpreadsheetApp.getActiveSpreadsheet();  
var sht = s.getSheetByName('Prova')  
var drng = sht.getDataRange();
var rng = sht.getRange(2,2, drng.getLastRow()-1,1);  //range that contain all values
var rngA = rng.getValues();
var unique = [];
 for(var i = 0; i < rngA.length; i++) {
var unique = unique.concat(rngA[i+1]);
} 
unique = unique.filter(onlyUnique);
Logger.log(unique)
}

【问题讨论】:

  • 您可以使用以下方法获取数组的所有唯一元素:[...new Set(array_to_sort)]
  • 检查 rngB 是否包含正确的值。
  • @Bellian 我不明白
  • @Bellian 我认为现在应该可以了
  • @Bellian if I put "...new Set" 对我说“语法错误”

标签: javascript arrays google-apps-script google-spreadsheet-api


【解决方案1】:
function getUniqueSortedArray(sheetname,column,datastartrow) 
{
  if(sheetname && column && datastartrow)
  {  
    var ss=SpreadsheetApp.getActive();
    var cntSh=ss.getSheetByName(sheetname);
    var cntRg=cntSh.getDataRange().sort({column:column,ascending:true});
    var vA=cntRg.getValues();
    var uiA=[];
    for(var i=datastartrow-1;i<vA.length;i++)
    {
      if(uiA.indexOf(vA[i][column-1])==-1)
      {
        uiA.push(vA[i][column-1]);
      }
    }
    return uiA;
  }
  else
  {
    return 'Invalid Inputs';
  }
}

这是我对你的代码的修改。

function UniqueSortedRange()  
{
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sh=ss.getSheetByName('Prova')
  var rg=sh.getDataRange().sort({column:2,ascending:true});
  var vA=rg.getValues();
  var sh0=ss.getSheetByName('Nuovo');
  var luneeko=[];
  for(var i=1;i<vA.length;i++)
  {
    if(luneeko.indexOf(vA[i][1])==-1)
    {
      luneeko.push(vA[i][1]);
    }
  }
  return luneeko;
}

【讨论】:

  • 我在那里有另一个应用程序的 String().trim() 函数,所以你可能不希望它在那里。我刚刚删除了它,但注意到你一直在这里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多