【问题标题】:GAS: how can I make this script faster? [closed]GAS:我怎样才能让这个脚本更快? [关闭]
【发布时间】:2021-09-10 09:45:41
【问题描述】:

工作表有多行由“;”连接我需要扩展字符串并保留表 ID。

ID Column X: Joined Rows
01 a;bcdfh;345;xyw...
02 aqwx;tyuio;345;xyw...
03 wxcv;gth;2364;x89...
function expand_joins(range) {
  var output2 = [];
  for(var i = 0, iLen = range.length; i < iLen; i++) {
    var s = range[i][1].split(";");    
    for(var j = 0, jLen = s.length; j < jLen; j++) {
      var output1 = []; 
      for(var k = 0, kLen = range[0].length; k < kLen; k++) {
        if(k == 1) {
          output1.push(s[j]);
        } else {
          output1.push(range[i][k]);
        }
      }
      output2.push(output1);
    }    
  }
  return output2;
}

理想的输出两列

ID Output
01 a
01 bcdfh
01 345
01 xyw
01 ...
02 aqwx

【问题讨论】:

    标签: javascript performance google-apps-script time


    【解决方案1】:

    更新

    如果您使用的是 V8 运行时(新 IDE),您可以尝试以下操作:

    
    function expandJoins(range) {
        return range
            .map(row => row[1]
                .split(';')
                .map(splitItem => [row[0], splitItem])
            )
            .flat();
    }
    

    【讨论】:

    • 很好,但输出不是预期的。让我用理想的输出更新问题。
    • 我用理想的输出更新了问题,这与问题中的示例代码一致。
    • @Joan 您正在读取的数据结构是什么?它是数组、列表还是表格? TheAddonDepot 也更新了答案。你能检查一下它是否回答了你的问题吗?
    • 是的,它很完美,而且你的脚本要快得多!另外,@stackoverflow 这不是一个基于意见的问题,它是关于脚本性能的。
    猜你喜欢
    • 2021-10-18
    • 1970-01-01
    • 2014-07-23
    • 2021-07-09
    • 2011-06-14
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 2011-07-20
    相关资源
    最近更新 更多