Переместить данные в конец листа - PullRequest
0 голосов
/ 02 июля 2018

У меня есть список дат, клиентов и данных смены в электронной таблице (строки A5: D34). Я хочу записать эти данные в последнюю строку листа. К сожалению, количество строк является переменным. За одну неделю данные могут быть 17 строк; позже это может быть 23 ряда. Я хочу «заархивировать» данные, переместив использованные строки в нижнюю часть листа.

Я ищу решение для кода (google script), которое может работать с тем фактом, что копируемый диапазон всегда имеет ширину 4 столбца, но переменное количество строк.

Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Я бы предложил использовать sheet.getDataRange(), чтобы узнать, сколько строк и столбцов содержат данные. Как только вы это знаете, вы можете получить нижний ряд.

Чтобы быстро просмотреть возвращаемые значения, я бы предложил использовать sheet.getDataRange().getValues(), который вернет двумерный массив со всеми значениями, хранящимися на вашем листе.

Чтобы узнать последнюю строку, содержащую данные, вы можете легко сделать следующее:

var lastRow = sheet.getDataRange.getValues().length;

Обратите внимание, что, поскольку длина массива начинает отсчитываться с 0 для первой строки, тогда как когда вы хотите установить значения обратно на свой лист, счетчик строк начинается с 1. Это означает, что вам нужно добавить 1 к счетчику lastRow.

Теперь, когда вы знаете последнюю строку, вы можете сначала выполнить некоторую очистку, чтобы удалить предыдущую нижнюю строку с помощью sheet.deleteRow(lastRow+1);

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

sheet.appendRow(["cellInColumnA";"cellInColumnB","cellInColumnC"]);
0 голосов
/ 02 июля 2018

Это довольно распространенная проблема, когда мы можем не знать или нам нужно вручную включать общее количество строк в листе. Мы можем использовать getRange () со значениями последней строки или getDataRange () для извлечения диапазона.

getRange(start_row,start_column,number_of_rows,number_of_columns);

чтобы использовать последнюю строку в приведенном выше синтаксисе, начиная с A1, просто измените параметры, как показано ниже.

var range = getRange(1,1,sheet.getLastRow(),sheet.getLastColumn());

Второй вариант - использовать getDataRange (), которая

var range = sheet.getDataRange();

PS: помните, что диапазон - это двумерный массив.

Надеюсь, это поможет:)

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