Очень плохо знаком с редактированием сценариев Google Sheets, но я пытаюсь перемещать строки между листами. Я сделал это успешно, используя getLastRow, однако сейчас я пытаюсь сделать это на основе указанного c столбца. Причина этого заключается в том, что на листе, к которому направляется информация, имеются предварительно установленные поля проверки данных и флажки, в результате чего строка каждый раз переходит в строку 1000.
Я ищу, когда в раскрывающемся меню на текущем листе выбрана опция, она найдет первую свободную строку на основе определенного столбца и заменит эту строку (которая по существу пуста, за исключением предустановленные поля).
В настоящее время у меня есть следующее:
function onEdit(event) {
// Move rows to different sheets based on action selected
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = SpreadsheetApp.getActiveRange();
if(range.getColumn() == 5 && range.getValue() == "Active") {
var row = range.getRow();
var numColumns = sheet.getLastColumn();
var targetSheet = spreadsheet.getSheetByName("Active");
var target = targetSheet.getRange(targetSheet.getLastRowSpecial(8) + 1, 1);
sheet.getRange(row, 1, 1, numColumns).moveTo(target);
sheet.deleteRow(row);
, и я нашел ниже и другие примеры, когда гуглил, но ничего не работает:
function getLastRowSpecial(column){
// Get the last row with data for the whole sheet.
var numRows = targetSheet.getLastRow();
// Get all data for the given column
var data = targetSheet.getRange(1, column, numRows).getValues();
// Iterate backwards and find first non empty cell
for(var i = data.length - 1 ; i >= 0 ; i--){
if (data[i][0] != null && data[i][0] != ""){
return i + 1;
}
}
}
Любая помощь очень оценили!