0

まず、この質問がすでに回答されている場合は、本当に申し訳ありません。私はスクリプトに関するすべてのことについて非常に基本的な理解を持っているので、自分の質問に対する答えに気づかずに既に出くわしていても驚かないでしょう (それは私の頭をはるかに超えていたからです)...

アルファベット順にソートしたい大規模な在庫スプレッドシートがありますが、在庫内のアイテムの多くには、ソートしたい最初の主要な単語の前にさまざまな接頭辞があります。並べ替えで無視する文字列または文字のセットを指定できるスクリプトを作成することはできますか? 指定された区切り文字に基づいて新しい列を生成することを含む答えを探しているときに多くの提案を見てきましたが、インベントリ内のアイテムに一貫したプレフィックス (またはプレフィックス) がないため、この方法はうまくいかないと思います)。この提案を試してみたところ、アイテムごとにソートしたい主な単語は、アイテム名によって異なる列です。うまくいけば、これは理にかなっています...誰かがテンプレートとして、またはこのようなスクリプトの作成を開始するための単なるリンクである場合、

4

2 に答える 2

1

以下のこの例では、Serge の肩に立っています。正規表現を使用して、サンプル内のより大きな単語 (5 文字以上 ... これを変更できますが、両方の Menthyl に一致する最高値は {7,}) に一致します。もちろん Butoxycarbo... も長いのでマッチします。):

function test2(){
         Logger.log(sort2( ['(1R,2S,5R)-(-)-Menthyl (S)-p-toluenesulfinate' ,'D-Alanine','Cis-3-(N-Tert-Butoxycarbonylamino)cyclopentanecarboxylic acid']));
       }


      function sort2(array){
          array.sort(function(x,y){
            var xp = x.match(/\b[A-z]{5,}\b.*$/m);
            var yp = y.match(/\b[A-z]{5,}\b.*$/m);
            return xp == yp ? 0 : xp > yp ? -1 : 1;// replace xp > yp with xp < yp for ascending order 
            });
          return array  
      }
于 2013-04-24T23:17:35.027 に答える
0

配列を使用してこれを行うことができます。これは、スペースの後の最初の文字 (小文字) で降順で並べ替える例です。

sort 関数で他のパラメーターを選択できます。

function test(){
  Logger.log(['xyz 123','wxy 234','vwx 345','abc 456',])
  Logger.log(sort(['xyz 123','wxy 234','vwx 345','abc 456',]))
 }
function sort(array){
    array.sort(function(x,y){
      var xp = x.toLowerCase().substring(x.indexOf(' ')+1);
      var yp = y.toLowerCase().substring(y.indexOf(' ')+1);
      return xp == yp ? 0 : xp > yp ? -1 : 1;// replace xp > yp with xp < yp for ascending order 
      });
    return array  
}

ログ出力:

[xyz 123, wxy 234, vwx 345, abc 456]
[abc 456, vwx 345, wxy 234, xyz 123]

ご覧のとおり、スペースの後の数字でソートされています(降順)

于 2013-04-24T20:00:08.780 に答える