javascript - 如何使用javascript从谷歌电子表格中一列的所有值中获取排序的唯一值

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

我需要帮助来获取特定列(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)
}

最佳答案

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;
}

关于javascript - 如何使用javascript从谷歌电子表格中一列的所有值中获取排序的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46034291/

相关文章:

android - Onlistitemclick 不起作用

c++ - 奇怪的 C++ Arduino 串行行为

javascript - 通过脚本设置对 Team drive 文件的权限

javascript - 无法使用 GAS 在 HTML 对话框中使用 Jquery UI 效果

javascript - Firebase:Cloud Firestore 触发器不适用于 FCM

javascript - array.push.apply 实现 'concat' with explain

JavaScript - 如何更改字符串的元素?

javascript - 为什么当我在另一个函数完成后调用函数时,它会调用所有之前的函数?

c++ - 当定义为模板参数时,编译器如何推断数组大小?

javascript - 对于列标题是否有与此类似的相应行 'header' 方法?