如何获取脚本以仅复制值的最后一行

时间:2019-01-11 21:23:50

标签: google-apps-script google-sheets

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

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以后的所有行中)有一些arrayformulas时,这可以正常工作!

所以脚本运行了,但是结果没有出现(我想是因为它无法在sheet11上找到lastrow)。

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

1 个答案:

答案 0 :(得分:0)

您可以使用类似的方法为所需的任何列获取单个列的高度。

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;
}