- Вы хотите переместить строку в последний ряд
namedRange
.
Если мое понимание верно, как другое решение, как насчет этой модификации?Я думаю, что подход вашего второго сценария близок к цели.Поэтому в этом ответе я использовал moveTo()
.Поскольку я думал, что этот подход может быть полезен и для других пользователей, я опубликовал это.Я думаю, что есть несколько ответов для вашей ситуации.Поэтому, пожалуйста, подумайте об этом как об одном из них.
С:
s.getRange(row, 1, 1,numColumns).moveTo(namedRange);
Кому:
s.getRange(row, 1, 1,numColumns).moveTo(namedRange.offset(namedRange.getLastRow() - namedRange.getRow(), 0));
- В этой модификации поместите строку впоследняя строка
namedRange
с использованием offset()
. - Если вы хотите поместить строку в следующую строку последней строки
namedRange
, измените ее следующим образом. s.getRange(row, 1, 1,numColumns).moveTo(namedRange.offset(namedRange.getLastRow() - namedRange.getRow() + 1, 0))
Примечание:
- В вашем скрипте используется
moveTo()
.Так что эту строку s.deleteRow(row)
можно удалить.Об этом, пожалуйста, сделайте это для вашей ситуации.
Ссылки:
Если это не тот результат, который вам нужен, я приношу свои извинения.
Редактировать:
- Вы хотите поместить строку впоследняя строка в именованном диапазоне.
- В этом случае последняя строка является последней строкой в именованном диапазоне.
- Например, именованный диапазон содержит 40 строк, а некоторые значения помещаются в первые 5 строк, вы хотите поместить строку из 6 строк.
Если мое понимание верно, как насчет этой модификации?
От:
s.getRange(row, 1, 1,numColumns).moveTo(namedRange);
Кому:
var values = namedRange.getValues();
for (var i = values.length - 1; i >= 0; i--) {
var r = values[i].some(function(e) {return e});
if (r) {
s.getRange(row, 1, 1,numColumns).moveTo(namedRange.offset(i + 1, 0));
break;
}
}
namedRange.getLastRow()
извлекает максимальную строкуномер названного диапазона.Поэтому я подготовил скрипт для получения последней строки в именованном диапазоне.