- Вы хотите переместить все строки, для которых в столбце «H» указано «Готово», на лист «СТАРЫЙ», запустив сценарий.
- Вы хотите запустить скрипт через пользовательское меню.
Я мог понять, как выше. Если мое понимание верно, как насчет этой модификации? Я думаю, что есть несколько ответов для вашей ситуации. Поэтому, пожалуйста, подумайте об этом как об одном из них. Процесс этого модифицированного сценария выглядит следующим образом.
- Получить значения столбца "H" на листе "Текущий".
- Получение индексов строк для перехода на лист "СТАРЫЙ".
- Переместить значения.
- Удалить строки.
Модифицированный скрипт:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Custom Menu')
.addItem('doneCopy', 'doneCopy')
.addToUi();
}
function doneCopy() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Current");
var values = sheet.getRange(1, 8, sheet.getLastRow(), 1).getValues();
var moveRows = values.reduce(function(ar, e, i) {
if (e[0] == "DONE") ar.push(i + 1);
return ar;
}, []);
var targetSheet = ss.getSheetByName("OLD");
moveRows.forEach(function(e) {
sheet.getRange(e, 1, 1, sheet.getLastColumn()).moveTo(targetSheet.getRange(targetSheet.getLastRow() + 1, 1));
});
moveRows.reverse().forEach(function(e) {sheet.deleteRow(e)});
}
Примечание:
onOpen()
запускается при открытии электронной таблицы. После открытия электронной таблицы, пожалуйста, запустите скрипт из пользовательского меню.
Ссылки: