回答編集履歴

1

実例

2022/12/26 14:25

投稿

Cocode
Cocode

スコア2316

test CHANGED
@@ -30,3 +30,30 @@
30
30
  質問者様の提示されているコードが一部のみのため、具体的なコード修正をご提案できない状況ですが、
31
31
  とにかく`[...new Set(配列)]`をすればいいです。
32
32
  ご提示いただいている`for() {}`の部分は全部不要だと思います。
33
+
34
+ ### 実例
35
+ スプレッドシートから取得してきた値のうち、重複を削除するコード例です。
36
+
37
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-26/e01f657a-3634-4d97-8f1c-7382811ae491.png)
38
+ ```javascript
39
+ function getUniqueValues() {
40
+ const sheet = SpreadsheetApp.getActiveSheet();
41
+ const startRow = 2;
42
+ const lastRow = sheet.getLastRow();
43
+
44
+ // セルの範囲を取得
45
+ const range = sheet.getRange(2, 1, lastRow - startRow + 1, 1); // 例)A2〜A5
46
+
47
+ // 範囲内の値を一括で取得
48
+ const values = range.getValues().flat();
49
+  // ↑↑↑の解説
50
+ // スプレッドシートから一括で値を取得すると、通常は2次元配列
51
+ //  例)range.getValues() ---> [ [ 'かき' ], [ 'いちご' ], [ 'かき' ], [ 'りんご' ] ]
52
+ // そのため、.flat()で2次元配列を、1次元配列化する
53
+ //  例)range.getValues().flat() ---> [ 'かき', 'いちご', 'かき', 'りんご' ]
54
+
55
+ // 重複した値を削除
56
+ const uniqueValues = [...new Set(values)];
57
+ Logger.log(uniqueValues); // [かき, いちご, りんご]
58
+ }
59
+ ```