3

我需要幫助以獲取特定列(B列)的唯一排序值列表。如何從Google電子表格的列中的所有值中使用javascript獲取排序的唯一值

這是我的嘗試(它不起作用),你能幫我找到錯誤嗎?

我沒能獲得在[對象]格式正確的範圍內......

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) 
} 
+0

您可以使用[... new set(array_to_sort)]獲取數組的所有獨特元素 – Bellian

+0

檢查rngB是否包含正確的值。 –

+0

@Bellian我不明白 –

回答

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

我有那裏的String()。trim()函數在另一個應用程序,所以你可能不希望它在那裏。我剛剛刪除它,但注意到你已經在這裏。 – Cooper

相關問題