Задача такая - сделать "плоский" список, который выводит данные в "плоском виде", т.е. где поцессы СА и пр отображаются в строках а не в столбцах Образец того что хочу отобразил на листе "что хочу"
Нашел на просторах интернета скрипт, который делает примерно то что нужно и выгружает на лист flat, но он сам по себе довольно сложный, особенно с 21 строки. Он работает, но дату начала и конца пишет в 1 колонку, а в следующих столбцах пишет вообще непонятно по какому принципу другие данные
Задача такая - сделать "плоский" список, который выводит данные в "плоском виде", т.е. где поцессы СА и пр отображаются в строках а не в столбцах Образец того что хочу отобразил на листе "что хочу"
Нашел на просторах интернета скрипт, который делает примерно то что нужно и выгружает на лист flat, но он сам по себе довольно сложный, особенно с 21 строки. Он работает, но дату начала и конца пишет в 1 колонку, а в следующих столбцах пишет вообще непонятно по какому принципу другие данные
const [[, , , ...header1], ...srcValues] = srcSheet.getRange("A1:AG" + lastRow).getValues(); for (var i = 1; i < srcValues.length; i++) { for (var c = 3; c < srcValues[0].length - 1; c++) { let x = []; x.push(srcValues[i][0]) x.push(srcValues[i][1]) x.push(srcValues[i][2]) x.push(header1[c - 3]) x.push(srcValues[i][c]) x.push(srcValues[i][c + 1]) c++; out.push(x) }
Спасибо! Работает как надо!
можете немного объяснить что происходит? Точнее я опишу что вижу а вы дайте свои комментарии const [[, , , ...header1], ...srcValues] = srcSheet.getRange("A1:AG" + lastRow).getValues(); Делаем 3 пропуска (это именно помтоу что их в моей таблице 3 пустых? т.е. в теории если я колонку добавлю то надо 4 пропуска делать?), потом заголовок 1, потом уже искомые величины. Не могу понять почему дважды квадратные скобки использованы? это массив это первая строка до последней строки вычисленной ранее в функции 1
Цитата
for (var i = 1; i < srcValues.length; i++) { for (var c = 3; c < srcValues[0].length - 1; c++) { let x = []; x.push(srcValues[i][0]) x.push(srcValues[i][1]) x.push(srcValues[i][2]) x.push(header1[c - 3]) x.push(srcValues[i][c]) x.push(srcValues[i][c + 1]) c++; out.push(x) }
Делаем цикл по i от 1 и по С от 3 а какая конечная величина обеих переменных т.е. i будет считать строки? а с - столбцы? или как?
и 6 строк кода обозначают 6 целевых столбцов?
Х - пустой массив берем 3 ячайки - это 3 заголовка которые одноэтажные, т.е. ячейки А2, В2, С2.? и потом значения под ними Потом берем заоголовек 1 минус 3, но переменная С у нас и так 3, поэтому просто берем заголовок 1, который у нас "верхний этаж" Потом берем заголовки "нижнего этажа"с 3 строки, и все что под ними и потом берем зачем то С+1, понять не могу зачем....
вроде как в итоге мы наполняем массив Х данными и потом зачем то берем массив OUT и наполняем данными из Х ??? это действие понять не могу
дальше понятно копируем вставляем))))
И еще, как бы сделать скрипт более универсальным? т.е. у нас например 3 столбца одноэтажные, потом 5 2х-этажние? или
2 столбца 1 этажные, потом 3 2 х этажные?
еще идея была сдвинуть значения в первх 3 столбцах наверх как бы в первую строку, но не могу сходу понять уменьшит ли это сложность расчетов или нет?
Цитата
const [[, , , ...header1], ...srcValues] = srcSheet.getRange("A1:AG" + lastRow).getValues(); for (var i = 1; i < srcValues.length; i++) { for (var c = 3; c < srcValues[0].length - 1; c++) { let x = []; x.push(srcValues[i][0]) x.push(srcValues[i][1]) x.push(srcValues[i][2]) x.push(header1[c - 3]) x.push(srcValues[i][c]) x.push(srcValues[i][c + 1]) c++; out.push(x) }
Спасибо! Работает как надо!
можете немного объяснить что происходит? Точнее я опишу что вижу а вы дайте свои комментарии const [[, , , ...header1], ...srcValues] = srcSheet.getRange("A1:AG" + lastRow).getValues(); Делаем 3 пропуска (это именно помтоу что их в моей таблице 3 пустых? т.е. в теории если я колонку добавлю то надо 4 пропуска делать?), потом заголовок 1, потом уже искомые величины. Не могу понять почему дважды квадратные скобки использованы? это массив это первая строка до последней строки вычисленной ранее в функции 1
Цитата
for (var i = 1; i < srcValues.length; i++) { for (var c = 3; c < srcValues[0].length - 1; c++) { let x = []; x.push(srcValues[i][0]) x.push(srcValues[i][1]) x.push(srcValues[i][2]) x.push(header1[c - 3]) x.push(srcValues[i][c]) x.push(srcValues[i][c + 1]) c++; out.push(x) }
Делаем цикл по i от 1 и по С от 3 а какая конечная величина обеих переменных т.е. i будет считать строки? а с - столбцы? или как?
и 6 строк кода обозначают 6 целевых столбцов?
Х - пустой массив берем 3 ячайки - это 3 заголовка которые одноэтажные, т.е. ячейки А2, В2, С2.? и потом значения под ними Потом берем заоголовек 1 минус 3, но переменная С у нас и так 3, поэтому просто берем заголовок 1, который у нас "верхний этаж" Потом берем заголовки "нижнего этажа"с 3 строки, и все что под ними и потом берем зачем то С+1, понять не могу зачем....
вроде как в итоге мы наполняем массив Х данными и потом зачем то берем массив OUT и наполняем данными из Х ??? это действие понять не могу
дальше понятно копируем вставляем))))
И еще, как бы сделать скрипт более универсальным? т.е. у нас например 3 столбца одноэтажные, потом 5 2х-этажние? или
2 столбца 1 этажные, потом 3 2 х этажные?
еще идея была сдвинуть значения в первх 3 столбцах наверх как бы в первую строку, но не могу сходу понять уменьшит ли это сложность расчетов или нет?yurakhl
Сообщение отредактировал yurakhl - Пятница, 16.08.2024, 10:02