Я хочу знать, как использовать setValue, если есть отфильтрованные строки, чтобы только показанные строки (C1 + одна строка до последней строки C) получали значение.
x(){
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
sheet.getRange(C2, lastRow).setValue('x');
}
Обновление
Работает, но очень медленно. Я проверил следующий код, и он работает быстро. Это должно начаться во второй показанной строке. Следующее решение работает как с фильтром, так и без него. Что еще не запущено, так это второй ряд (C2). Скопированное значение всегда вставляется туда. Кроме того, я хотел бы обойтись без вспомогательной ячейки для копирования, если это возможно. Можно ли скопировать setValue для функции copypaste (getValue)?
function x() {
var spreadsheet = SpreadsheetApp.getActive();
var lastRow = spreadsheet.getLastRow();
spreadsheet.getRange('C2:'+'C'+lastRow).activate();
spreadsheet.getRange('C1').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
};
Цель состоит в том, чтобы поместить x в видимые (не скрытые или невидимые отфильтрованные) ячейки столбца C , Для этого мне просто нужно знать, как указать вторую видимую ячейку как значение getRange (например, со смещением), потому что работает оставшаяся часть (конечная ячейка: lastRow) (правильный выбор и ввод, только C2, каждый раз, если я используя этот скрипт, есть в C2 ax):
spreadsheet.getRange('C2:'+'C'+lastRow).activate();
Первая строка исправлена. Как использовать первый не видимый ряд (второй ряд) для getRange? Если последняя строка скрыта и используется сценарий, то здесь x не задан, возможно, из-за 'C' + lastRow. Это работает. Это касается только C2.
Вот решение
var s = SpreadsheetApp.getActive().getActiveSheet();
function x() {
var lastRow = s.getLastRow();
for(var row = 2; s.isRowHiddenByFilter(row); ++row);
var range = s.getRange('C'+row+':C'+lastRow);
s.getRange('F1').copyTo(range, SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}