Как получить скрипт для копирования только последней строки значений - PullRequest
0 голосов
/ 12 января 2019

У меня есть следующий скрипт (скопированный с форума), чтобы скопировать последнюю строку из листа ответов формы (Событие) на лист назначения (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 и далее) некоторые формулы массива!

Итак, скрипт выполняется, но результат не появляется (я полагаю, потому что он не может найти последнюю строку на листе 11).

Как это следует изменить, чтобы скопировать A: AC (только значения) из последней строки Event! на листе 11, в котором A: AC пуст, но Cols AD уже имеет формулы

1 Ответ

0 голосов
/ 12 января 2019

Вы можете использовать что-то вроде этого, чтобы получить высоту одного столбца для любого столбца, который вы хотите.

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...