如何使用谷歌应用脚​​本找到最后一列?

Posted

技术标签:

【中文标题】如何使用谷歌应用脚​​本找到最后一列?【英文标题】:How to find the last column using google apps script? 【发布时间】:2021-08-07 15:58:40 【问题描述】:

我想使用onEdit 函数将数据从G11:G22 复制到工作表的最后一列,从第11 行开始。因此,一旦我在单元格F7 中选择Transfer,就会触发脚本。运行脚本后,数据应出现在H11:H22 范围内,因为 H 列是工作表中的最后一列。我应该如何做到这一点?这是我尝试过的:

function onEdit(e)
  var ss = SpreadsheetApp.getActiveSheet();
  var lastrow = ss.getLastRow()

  for( var k = 2; k <= lastrow ; k++) 
    var m = 1; 
      while( sheet.getRange(k,m).isBlank() == false) 
        m = m +1;
      
      var lastcolumn = m
  
  var destRange = ss.getRange(11,lastcolumn+1)
  
  if (e.range.columnStart == 6 && e.range.rowStart == 7)
    if (e.value == 'Transfer')
      var source = ss.getRange("G11:G22")
      source.copyTo (destRange, contentsOnly: true)
      e.range.clearContent()
   
  

我认为问题来自For loop,但我不知道出了什么问题。希望能得到一些帮助,谢谢。

【问题讨论】:

根据你的截图:你为什么不能只使用ss.getLastColumn() 方法?它应该给你 7 号。 【参考方案1】:

根据你的截图,我想你可以使用getLastColumn()

function onEdit(e) 
  var ss = SpreadsheetApp.getActiveSheet();
  var destRange = ss.getRange(11, ss.getLastColumn() + 1)

  if (e.range.columnStart == 6 && e.range.rowStart == 7) 
    if (e.value == 'Transfer') 
      var source = ss.getRange("G11:G22")
      source.copyTo(destRange,  contentsOnly: true )
      e.range.clearContent()
    
  

如果表格右侧没有更多填充单元格,则无需for 循环获取最后一列。

【讨论】:

以上是关于如何使用谷歌应用脚​​本找到最后一列?的主要内容,如果未能解决你的问题,请参考以下文章

使用谷歌应用脚​​本更新数据验证规则时如何保留原始范围

如何在谷歌应用脚​​本中将段落 html 字符串转换为没有 html 标签的纯文本?

如何从跨源站点中框架的谷歌应用脚​​本 webapp 访问相机?

如何使用谷歌应用脚​​本将视频从谷歌驱动器上传到 YouTube?

谷歌应用脚​​本从 gmail 中删除特定附件

谷歌应用脚​​本没有循环