2017-12-04 4 views
0

これは私が作った関数です。 var myArrayは名前のリストです。私はこの配列から一意の値だけを取得し、別のシートに設定することはできません。私は一度名前を付けるだけです。SpreadsheetApp配列から一意の値を返す方法

function array() {   
     var app = SpreadsheetApp; 
     var ss = app.getActiveSpreadsheet().getSheetByName("test"); 
     var destinationSheet = app.getActiveSpreadsheet().getSheetByName("test2"); 

     var myArray = ss.getRange(2,1,30).getValues(); 

     destinationSheet.getRange(2, 1, 30).setValues(myArray); 
} 

このアレイをフィルタリングする手助けができますか?

答えて

0

Javascript配列は、配列,MapまたはSetのような配列を値のセットとして作成することができるfromメソッドを使用しています。

あなたはそれhereについての詳細を読むことができ、あなたのコード内でmyArrayの定義の後

myArray = Array.from(new Set(myArray)); 

をこれを追加します。

OR

あなたは一意の値をフィルタするために、単純なforEachループを使用することができます。

あなたの配列には名前だけが含まれており、getValuesは2次元配列を返すと仮定すると、配列は - [['name1', 'name2', 'name3']]のようになります。 L'オブジェ機能アレイ(){[ネイティブコードのためのintrouvableからFonction DANS:TypeError例外:

var newArray = []; 
myArray.forEach(function(x){ 
    if(newArray.indexOf(x[0]) === -1){ 
     newArray.push(x[0]); 
    }     
}); 
+0

ですArray.Array、arity = 1]}となります。それはGoogleのシートは –

+0

@ MaximeMorin-Gagnonからの方法を認識しないように見えるエラーメッセージをコピーして貼り付けてくださいできますか?私は何が書かれているのか理解できませんでした。 –

+0

TypeError:introuvable dansオブジェクトからの関数Array(){[Array.Arrayの自然コード、arity = 1]} (ligne 9、fichier "Code") –

0

は、ここで私はそれを置くとき、私は、このエラーメッセージが表示されました(Googleのスクリプトのために)別のアプローチ

function myArray() { 
var ss, s, a; 
ss = SpreadsheetApp.getActive(); 
s = ss.getSheetByName("test").getRange(2, 1, 30).getValues(); 
a = []; 
a.push(s[0]); 
for (var n = 1; n < s.length; n++) { 
    if (a.join().indexOf(s[n].join()) == -1) { 
     a.push(s[n]) 
    }; 
} 
ss.getSheetByName("test2").getRange(2, 1, a.length, a[0].length).setValues(a); 
} 
+0

これは素晴らしいthxたくさん動作します。必要ならば、join()とindexOf()を使ってif文を実際に素早く説明できますか?私はこの部分を理解していないと分かっていませんでした。私は灰皿がなくなっていました –

+0

@ MaximeMorin-Gagnon。確かに:join()メソッドは配列を文字列に変換します。したがって、配列 'a'は(それにプッシュされるすべての行を含む)文字列に変換され、indexOfはjoin()メソッドによって文字列に変換された現在の行(ループ内)その「大きい」弦(a)のうちの1つ。 – JPV

+0

これが助けられた場合は、与えられた答えをupvoteまたは受け入れてください。 – JPV

関連する問題