Скопировать строку данных на основе двух условий на лист, который открывается по идентификатору или URL
У меня есть код, который помогает мне копировать строку данных на основе условия в данном столбце. У меня есть лист под названием "Мастер", который содержит около 1000 строк данных. Я хочу переместить строку данных на лист под названием "Основные ответы", если в столбце 1 "Мастер" есть слово "Положительный" или "Отрицательный". Я использовал функцию или (||) в ЗАЯВЛЕНИИ ЕСЛИ, чтобы выбрать условие (то есть, если введен "Положительный" или "Отрицательный"), но строка копируется только при вводе "Положительного" в первом столбце. Когда я набираю "Отрицательный" в первом столбце, строка не копируется. Кроме того, я хотел знать, как код должен быть изменен, если бы мне пришлось вызывать лист "Основные ответы", используя ".openByID или.openByURL". Я приложил код, пожалуйста, не стесняйтесь редактировать его. Я новичок в написании сценариев и застрял на этом более месяца. Любая помощь будет оценена. Заранее спасибо.
function onEdit()
{
var sheetNamesToWatch = ["Master"];
var columnNumberToWatch = 1;
var valuesToWatch = ["Positive"];
var valuesToWatch1 = ["Negative"];
var targetSheetsToMoveTheRowTo = ["Master Responses"];
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if(sheetNamesToWatch.indexOf(sheet.getName()) != -1 &&
valuesToWatch.indexOf(range.getValue()) != -1 ||
valuesToWatch1.indexOf(range.getValue()) != -1 && range.getColumn()
==columnNumberToWatch)
{
var targetSheet = ss.getSheetByName(targetSheetsToMoveTheRowTo[valuesToWatch.indexOf(range.getValue())]);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1,
sheet.getLastColumn()).copyTo(targetRange);
}
}
1 ответ
Я не уверен насчет.openByID или.openByURL, однако это должно решить проблему с "Отрицательным".
Я также добавил дополнительные скобки в первом операторе if, чтобы мне было ясно, что он проверяет.
function onEdit()
{
var sheetNamesToWatch = ["Master"];
var columnNumberToWatch = 1;
var valuesToWatch = ["Positive"];
var valuesToWatch1 = ["Negative"];
var targetSheetsToMoveTheRowTo = ["Master Responses"];
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if((sheetNamesToWatch.indexOf(sheet.getName()) != -1) && ((valuesToWatch.indexOf(range.getValue()) != -1) ||
(valuesToWatch1.indexOf(range.getValue()) != -1)) && (range.getColumn() ==columnNumberToWatch))
{
if (valuesToWatch.indexOf(range.getValue()) != -1)
{
var targetSheet = ss.getSheetByName(targetSheetsToMoveTheRowTo[valuesToWatch.indexOf(range.getValue())]);
}
else
{
var targetSheet = ss.getSheetByName(targetSheetsToMoveTheRowTo[valuesToWatch1.indexOf(range.getValue())]);
}
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1,
sheet.getLastColumn()).copyTo(targetRange);
}
}