ユーザ用ツール

サイト用ツール


サイドバー



最近の更新



Tag Cloud

タグ数量
9
10
1
3
1
2
17
7
1
1
4
13
4
1
2
314
1
9
2
7
21
5
1
31
3
3
1
6
1
1
46
1
3
3
1
1
1
1
1
1
33
46
7
9
10
8
10
3
21
2
9
2
2
6
9
1
1
6
12
4
3
3
2
1
8
2
4
1
6
30
2
12
5
3
1
1
2
3
2
1
3
4
3
3
4
2
2
1
1
2
1
2
1
2
1
27
2
1
3
2
2
1
1
2
3
17
5
9
1
1
2
17
2
6
1
2
12
1
3
1
1
4
11
1
6
4
2
7
1
3
3
13
1
4
1
1
10
3
1
17
3
1
5
1
2
1
1
2
9
2
2
3
2
1
3
1
3
1
2
2
2
1
2
6
1
4
3
5
1
3
1
3
3
2
1
1
30
1
3
3
1
1
1
5
5
1
36
2
4
2
1
2
2
3
1
1
1
4
1
2
1
3
1
1
1
2
5
2
5
2
1
1
1
5
3
2
4
6
1
2
2
27
1
1
3
4
1
1
2
1
1
2
1
1
1
1
2
1
1
1
1
1
20
7
1
6
1
1
3
1
2
2
1
2
1
1
1
1
1
1
2
1
1
2
1
1
1
1
1
1
1
5
2
1
1
2
2
2
1
1
2
1
1
12
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
1
1
1
2
13_javascript:10_gas_error

10 GAS 比較方法がその一般契約に違反しています

GASで変数をソートしようとした時エラーがでました。
どうも数10個の少ない配列だとこのコードでもエラーはでない。
配列の数が多くなってくると失敗するみたいです。
配列の数以外の原因はつかめず。。。

コード

  outputValues.sort(function(a, b){
    if (a[1] > b[1])  return  1;
    if (a[1] < b[1])  return -1;
    return 0;    
  });

エラー 英語

java.lang.IllegalArgumentException: Comparison method violates its general contract!

エラー 日本語

比較方法がその一般契約に違反しています

対応方法

今回の場合は、変数の配列をソート後にスプレッドシートに書き込もうとしていたので、
逆にスプレッドシートに書き込んだ後に、下記でソートする事で対応しました。

A-Cのセルに書き込んで、A行でソート

  newItmeSheet.getRange('A' + START_ROW + ':' + 'C' + (START_ROW + outputValues.length - 1)).sort(1);
13_javascript/10_gas_error.txt · 最終更新: 2021/05/11 10:21 by matsui

Yesterday:1556 Today:1554 Total:28713