скрипт для ввода данных в следующую пустую ячейку - PullRequest
0 голосов
/ 16 марта 2019

Медленно работаю над пониманием javaScript и его вариаций, таких как GAS, но только для начинающих.

У меня есть скрипт, который после выполнения копирует формулу в качестве значений и вставляет ее в другую ячейку.Этакая функция архивирования.

function csArchive() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var origin = ss.getRange('sheet1!D17');
  origin.copyTo(ss.getRange('sheet1!Z2'), {contentsOnly: true});

Другими словами, скрипт выполняет: 1. копирование с активного листа и указанного диапазона.2. Вставьте в указанный диапазон (z2).чего там не хватает - проверьте, не является ли z2 пустым, а если нет, спускайтесь вниз, пока не найдете пустую ячейку, затем вставьте значение.

Я верю, что мое спасение за .getLastRow(), но на всю жизньЯ не могу заставить его работать должным образом.Заранее спасибо!

1 Ответ

0 голосов
/ 16 марта 2019

Последняя строка в столбце Z в activeSheet

function getColumnHeight(col,sh,ss){
  var ss=ss || SpreadsheetApp.getActive();
  var sh=sh || ss.getActiveSheet();
  //var col=col || sh.getActiveCell().getColumn();
  var col = col || 26;
  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;
}

Пример того, как использовать это:

function csArchive() {
  var ss = SpreadsheetApp.getActive();
  var sh = ss.getActiveSheet();
  var origin = sh.getRange('sheet1!D17');
  origin.copyTo(sh.getRange(getColumnHeight(26)+1,26), {contentsOnly: true});
  //origin.copyTo(sh.getRange(getColumnHeight()+1,26), {contentsOnly: true});//You can also do it this way since I defaulted col parameter to 26
}

Вы говорите, что у вас есть что-то вроде этого:

enter image description here

Предполагая, что вы не позволите этому диапазону заполниться:

function getNextEmptyCell(){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var rg=sh.getRange(1,26,54,1);
  var vA=rg.getValues();
  while(vA[vA.length-1][0].length==0){
    vA.splice(vA.length-1,1);
  }
  return vA.length + 1;
}

function csArchive() {
  var ss = SpreadsheetApp.getActive();
  var sh = ss.getActiveSheet();
  var origin = sh.getRange('sheet1!D17');
  origin.copyTo(sh.getRange(getNextEmptyCell(),26), {contentsOnly: true});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...