Если я правильно понимаю, вы хотите записать один столбец данных с одного листа на другой и не переопределять столбцы, которые вы написали в предыдущих прогонах, а вместо этого вы хотите записать данные в следующий пустой столбец.
Вы можете перебирать столбец за столбцом (до 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