====== 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); {{tag>GAS javascript}}