【问题标题】:How to find the last column based on Row 4 using google apps script?如何使用谷歌应用脚​​本找到基于第 4 行的最后一列?
【发布时间】:2021-08-07 13:54:43
【问题描述】:

大家好,

我想使用脚本查找工作表中的最后一列(基于第 4 行)并将 A 列中的名称数据粘贴到脚本找到的最后一列中。这是我的脚本:

function onEdit(e){
  var ss = SpreadsheetApp.getActiveSheet ()
  var direction = SpreadsheetApp.Direction
  var aLast = ss.getRange((ss.getLastColumn()+1)+"4").getNextDataCell(direction.RIGHT).getColumn()
  var destRange = ss.getRange(4,aLast+1)

  if (e.range.columnStart == 1 && e.range.rowStart == 5){
    if (e.value == 'Copy'){
      var source = ss.getRange("A7:A13")
      source.copyTo (destRange, {contentsOnly: true})
      e.range.clearContent()
    }
  }
}

我正在使用onEdit 函数来触发脚本。触发脚本后,它应该从 A 列复制数据并将其粘贴到 D 列(找到的最后一列),如下面的屏幕截图所示:

但是,脚本似乎有问题。我认为问题来自脚本中的aLastdestRange。请问我应该如何修改这两个var 以便脚本可以正常工作?任何帮助将不胜感激!

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:
    var aLast = ss.getDataRange().getValues()[3].filter(String).length;
    

    它将在第 4 行为您提供非空单元格的数量。

    如果行中有空单元格,则需要另一个解决方案。

    【讨论】:

    • 嗨,尤里,感谢您的回复。如果我希望它基于第 7 行,我应该改变什么?我可以知道[3] 在您的代码中是什么意思吗?
    • getDataRange().getValues() 为您提供包含工作表所有行和单元格的二维数组。 [3] 是二维数组的第 4 行。请注意,如果工作表的前三行是空的,则数字可以是 [0]。所以这取决于你的数据。可能以更常见的方式获取行更安全:var aLast = ss.getRange(4, 1, 1, ss.getLastColumn()).getValues()[0].filter(String).length;
    • 对于第 7 行,您需要将 [3] 更改为 [6]
    • 对不起最后一个问题,如果我将A列中的数据移动到O列,我应该为getRange中的参数更改什么?我把它改成了var aLast = ss.getRange(7, 2, 2, ss.getLastColumn()).getValues()[0].filter(String).length;,但似乎是错误的
    • 首先,对于这种情况,第 7 行需要 15 个(或 14 个)非空单元格。这是代码的要点,它获取某行的长度并将其用作目标列的数量。其次,您不需要 ..2,2... 它应该是 1,1:var aLast = ss.getRange(7, 1, 1, ss.getLastColumn()).getValues()[0].filter(String).length;
    【解决方案2】:

    我相信您只需将结果数据向左移动一列即可;你可以试试var destRange = ss.getRange(4,aLast)而不是var destRange = ss.getRange(4,aLast+1)吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多