У меня есть запрос, содержащий информацию с другого листа, имена и тому подобное.А в столбце C у меня есть скриптовая функция, которая добавляет и удаляет раскрывающийся список подтверждения данных, если новые имена добавляются или удаляются.Он основан на функции getFirstEmptyRow()
из stackoverflow.com / questions / 6882104 .Работает как задумано.Однако, если источник запроса изменяется, имена будут смещаться вниз или вверх в зависимости от того, какая строка была вставлена или удалена.Мне было интересно, есть ли способ найти первую измененную строку и вставить или удалить ячейку в столбце C в этой строке, чтобы сдвинуть все значения в столбце C со смещенными именами?
Вот что яработаю с:
///Functions to automatically add and replace dropdown boxes
function onChange(e){
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var FirstEmptyA = getFirstEmptyRow('A:A');
var FirstEmptyC = getFirstEmptyRow('C:C');
var dif = Math.abs(FirstEmptyA - FirstEmptyC);
Logger.log(dif);
var EmptyArow =ss.getRange(FirstEmptyA ,3)
var validationList = SpreadsheetApp.newDataValidation().requireValueInList(['PLACE','BATH','BANK','SCHOOL'], true).build()
if(FirstEmptyA - FirstEmptyC < 0){
var rangedif =ss.getRange(FirstEmptyA+1,3,dif)
rangedif.clearDataValidations();
rangedif.clearContent();
}
else if(FirstEmptyC - FirstEmptyA < 0) {
var rangedif =ss.getRange(FirstEmptyC +1,3,dif)
rangedif.setDataValidation(validationList);
rangedif.setValue('PLACE');
}
}
function getFirstEmptyRow(range) {
var spr = SpreadsheetApp.getActiveSpreadsheet();
var column = spr.getRange(range);
var values = column.getValues();
var ct = 0;
while ( values[ct] && values[ct][0] != "" ) {
ct++;
}
return (ct);
}