Запись значений в следующий столбец (ячейка справа), если текущий столбец (ячейка) не пуст - PullRequest
0 голосов
/ 25 июня 2019

У меня есть простой код, который получает и устанавливает данные с / на разные листы.

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

Любой оператор IF просто отправляет одно и то же значение дважды. Что мне нужно сделать?

Большое спасибо.

    //get values from tab 1 table
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Sheet1');
  var gcls = s.getRange(6, 10, 4).getValues();

  //write values in tab 2
  var gSheet = ss.getSheetByName('Tracking');
  var gcells = gSheet.getRange(5, 1, 4);
  gcells.setValues(gcls);

1 Ответ

0 голосов
/ 25 июня 2019

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

Вы можете перебирать столбец за столбцом (до 256, что является максимальным количеством столбцов для листа) по диапазону строк, в которые вы хотите записать, в данном случае 4 строки, начиная с 5-й строки и первого столбца для первого итерации, используя функцию isBlank [1] в операторе if, вы можете проверить, является ли диапазон пустым, и записать в него.

Я протестировал следующий код и работал так, как вы хотите:

function test3() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Sheet1');
  var gcls = s.getRange(6, 10, 4).getValues();

  //write values in tab 2  
  var gSheet = ss.getSheetByName('Tracking');

  //Loop until finds empty range
  for(i=1; i<=256; i++) {
    // Warning: Be aware that getRange retrieves a Range type, not a cell. For more info check [2] 
    var gcells = gSheet.getRange(5, i, 4);
    if (gcells.isBlank()) {
       gcells.setValues(gcls);
       break;
    } 
  } 
}

[1] https://developers.google.com/apps-script/reference/spreadsheet/range#isblank

[2] https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangerow-column-numrows

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...