首页 > 解决方案 > 如何让脚本仅复制最后一行值

问题描述

我有以下脚本(从论坛复制)将最后一行从表单响应表(事件)复制到目标表(sheet11)。触发器是:在表单提交上。

function CopyLastrowForm() {
  var ss = SpreadsheetApp.getActiveSpreadsheet ();
  var sourceSheet = ss.getSheetByName("Event");
  var source = sourceSheet.getRange("A:AC" + sourceSheet.getLastRow());
  var destSheet = ss.getSheetByName("Sheet11");
  var lastRow = destSheet.getLastRow();
  if (lastRow) destSheet.insertRowAfter(lastRow);
  source.copyTo(destSheet.getRange(lastRow + 1,1), {contentsOnly: true});
}

当目标工作表行为空白时效果很好,但我有(在目标工作表 AD 的所有行中)一些数组公式!

所以脚本运行但结果没有出现(我假设因为它在 sheet11 上找不到 lastrow)。

应该如何对其进行修改,以便从事件的最后一行复制 A:AC(仅值)!到 Sheet11,其中 A:AC 为空白,但 Cols AD 以后已经有公式

标签: google-apps-scriptgoogle-sheets

解决方案


你可以使用这样的东西来为你想要的任何列获得一个列高。

function getColumnHeight(col){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getRange(1,col,sh.getLastRow(),1);
  var vA=rg.getValues();
  while(vA[vA.length-1][0].length==0){
    vA.splice(vA.length-1,1);
  }
  return vA.length;
}

推荐阅读