配列から重複した値を削除する方法は、丸暗記してしまいましょう。
javascript
1[...new Set(配列)]
解説
javascript
1const sampleArr = ['かき', 'いちご', 'かき', 'りんご'];
2const result = [...new Set(sampleArr)];
3console.log(result); // ['かき', 'いちご', 'りんご']
Setとは、値のコレクションのオブジェクト{ }
です。
またSetの中には重複した値を収納できません。
この特性を利用して、配列をnew Set()
してやれば、自動的に重複した値が削除されます。
しかし、Setは配列ではありませんので、作成されたSetオブジェクトを配列に変換してやる必要があります。
そのためにスプレッド構文を利用しています。
javascript
1// Setの例
2const setObj = new Set(['かき', 'いちご', 'かき', 'りんご']);
3console.log(setObj); // {'かき', 'いちご', 'りんご'}
4
5// スプレッド構文の例
6const arr = [...setObj];
7console.log(arr); // ['かき', 'いちご', 'りんご']
質問者様の提示されているコードが一部のみのため、具体的なコード修正をご提案できない状況ですが、
とにかく[...new Set(配列)]
をすればいいです。
ご提示いただいているfor() {}
の部分は全部不要だと思います。
実例
スプレッドシートから取得してきた値のうち、重複を削除するコード例です。

javascript
1function getUniqueValues() {
2 const sheet = SpreadsheetApp.getActiveSheet();
3 const startRow = 2;
4 const lastRow = sheet.getLastRow();
5
6 // セルの範囲を取得
7 const range = sheet.getRange(2, 1, lastRow - startRow + 1, 1); // 例)A2〜A5
8
9 // 範囲内の値を一括で取得
10 const values = range.getValues().flat();
11 // ↑↑↑の解説
12 // スプレッドシートから一括で値を取得すると、通常は2次元配列
13 // 例)range.getValues() ---> [ [ 'かき' ], [ 'いちご' ], [ 'かき' ], [ 'りんご' ] ]
14 // そのため、.flat()で2次元配列を、1次元配列化する
15 // 例)range.getValues().flat() ---> [ 'かき', 'いちご', 'かき', 'りんご' ]
16
17 // 重複した値を削除
18 const uniqueValues = [...new Set(values)];
19 Logger.log(uniqueValues); // [かき, いちご, りんご]
20}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/26 12:48
2022/12/26 13:35
2022/12/26 14:26
2023/01/02 12:47