带有忽略字符的Google电子表格排序脚本?

时间:2013-04-24 17:24:30

标签: google-apps-script

首先,如果这个问题已经得到解答,我真的很抱歉。我对脚本的所有内容都有一个非常基本的把握,所以如果我在没有意识到的情况下已经找到了我的问题的答案(因为它超出了我的想法),我不会感到惊讶... ...

我有一个大型库存电子表格,我想按字母顺序排序,但清单中的许多项目在其第一个主要单词之前有各种前缀,我想排序。是否可以创建一个脚本,我可以指定一组在排序中应该忽略的字符串或字符?我在搜索包含基于指定分隔符生成新列的答案时看到了很多建议,但我不认为这种方法对我有用,因为库存中的项目没有一致的前缀(或前缀) )。当我尝试这个建议时,根据项目名称,我想为每个项目排序的主要单词是不同的列。希望这是有道理的......如果有人作为模板,甚至只是一个链接让我开始创建这样的脚本,我真的很感激。

2 个答案:

答案 0 :(得分:1)

我站在Serge的肩膀上,下面是这个例子,使用正则表达式匹配样本中较大的单词(5个或更多字母......你可以改变这个,但{7,}是最高的匹配Menthyl和Alanine。当然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  
      }

答案 1 :(得分:0)

您可以使用数组执行此操作,这是一个示例,我按空格(在lowerCase中)对第一个字符进行降序排序。

您可以在排序功能中选择其他参数。

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]

如您所见,它按空格(降序)后的数字排序