【问题标题】:How can I skip a column when using getRange() - Google Apps Script使用 getRange() 时如何跳过一列 - Google Apps 脚本
【发布时间】:2020-12-09 01:33:18
【问题描述】:

我似乎无法弄清楚如何让这个脚本跳过列L。我尝试了许多不同的品种,但都导致错误。希望有经验的大侠指点一下。我需要I:KM:O 而没有L

sheet1.getRange("I1:O"+sheet1.getLastRow()).getValues()

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    作为一个简单的修改,下面的修改怎么样?

    发件人:

    sheet1.getRange("I1:O"+sheet1.getLastRow()).getValues()
    

    收件人:

    sheet1.getRange("I1:O"+sheet1.getLastRow()).getValues().map(([i,j,k,,m,n,o]) => [i,j,k,m,n,o]);
    

    sheet1.getRange("I1:O"+sheet1.getLastRow()).getValues().map(([i,j,k,,...mno]) => [i,j,k,...mno]);
    

    注意:

    • 请使用此修改后的脚本启用 V8 运行时。

    参考资料:

    【讨论】:

      【解决方案2】:

      另一种方法:

      const array = sheet1.getRange('I1:O'+sheet1.getLastRow()).getValues();
      array.forEach(a => a.splice(3, 1));
      

      更详细地说,之所以选择3,是因为从0开始,L位于第三位:I, J, K, L

      代码 sn-p:

      function myFunction() {
        const ss = SpreadsheetApp.getActive();
        const sheet1 = ss.getSheetByName('Sheet1');
        const array = sheet1.getRange('I1:O'+sheet1.getLastRow()).getValues();
        array.forEach(a => a.splice(3, 1));
        console.log(array);
      }
      

      【讨论】:

      • 我认为这也是一个很好的解决方案。当数组大小较大时,使用splice时,可以节省运行Google Apps Script的内存。
      • @Tanaike 为了帮助我更好地理解您的评论,您的意思是来自 soMario 的脚本... [A] 对于更大的数组大小更好?或者 [B] 对于更大的数组大小更糟?谢谢你:)
      • @JamesReed68 关于您的问题,例如,当仅使用一个数组时,在循环中使用较大的数组大小时,会出现与内存相关的错误。在这种情况下,我认为当splice 用于数组时,这样的错误变得难以发生。如果这个解释没有用,我很抱歉。
      • @Tanaike 感谢您的详细回答。我学到了很多。谢谢你:)
      • @JamesReed68 欢迎您。当我的评论有用时,我很高兴。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-24
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多