ユーザ用ツール

サイト用ツール


サイドバー

このページの翻訳:



最近の更新



Tag Cloud

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