@Andrey_78

Как Последовательно записать столбцы с разных листов google sheets в один массив (Google apps script)?

Передаю данные через переменную в цикле, затем по задумке должен записываться массив из 3 листов, но почему-то остается массив только последнего листа в чем моя ошибка ?

function Flat_data() {

var a = ["Sheet #1", "Sheet #2", "Sheet #3"];
var index;
for (index = 0; index < a.length; ++index) {
   /// Logger.log(a[index]);

var SOURCESHEET = SpreadsheetApp.openById("ID таблицы с которой беруться данные").getSheetByName(a[index]); 


var source_last_row = SOURCESHEET.getLastRow();

var source_range1 = SOURCESHEET.getRange("G6:I"+(source_last_row)).getValues();
var source_range2 = SOURCESHEET.getRange("J6:L"+(source_last_row)).getValues();
var source_range3 = SOURCESHEET.getRange("N6:P"+(source_last_row)).getValues(); 
var source_range4 = SOURCESHEET.getRange("Q6:S"+(source_last_row)).getValues(); 

var targetvalues = [];
targetvalues = source_range1.concat(source_range2,source_range3,source_range4);

}  
Logger.log(targetvalues);
}
  • Вопрос задан
  • 1362 просмотра
Пригласить эксперта
Ответы на вопрос 2
1. При каждой итерации цикла, targetvalues создаётся заново. Нужно её описание вынести за цикл.
2. При каждой итерации цикла, targetvalues присваивается новое значение, независимо от её содержимого. Нужно к старому значению добавлять новое.
Ответ написан
@JohnnyBravo7
аналитика, маркетинг, python, js, google script
function Flat_data() {

var a = ["Sheet #1", "Sheet #2", "Sheet #3"];
var total = [];
var index;
for (index = 0; index < a.length; ++index) {
   /// Logger.log(a[index]);

var SOURCESHEET = SpreadsheetApp.openById("ID таблицы с которой беруться данные").getSheetByName(a[index]); 


var source_last_row = SOURCESHEET.getLastRow();

var source_range1 = SOURCESHEET.getRange("G6:I"+(source_last_row)).getValues();
var source_range2 = SOURCESHEET.getRange("J6:L"+(source_last_row)).getValues();
var source_range3 = SOURCESHEET.getRange("N6:P"+(source_last_row)).getValues(); 
var source_range4 = SOURCESHEET.getRange("Q6:S"+(source_last_row)).getValues(); 

var targetvalues = [];
targetvalues = source_range1.concat(source_range2,source_range3,source_range4);
total.push(targetvalues);
}  
Logger.log(total);
}


Логика у вас нарушена в скрипте немного.
У вас нет хранилища, куда вы записываете без удаления.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы