У меня есть тестовый лист, на котором я использую сценарий onEdit для копирования строки данных на другую вкладку и удаления строки из источника. Он работает нормально, но я хотел бы, чтобы целевой лист был переменной на основе значения ячейки в строке.
/* This script will send the the student data from source sheet to target sheet when checkbox is true in ColA
*/
function onEdit(event) {
const ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var eventSheet = event.source.getSheetByName("sheet1");
const sourceSheet = ss.getSheetByName("sheet1");
const targetSheet = ss.getSheetByName("sheet2");
var eventRange = event.source.getActiveRange();
//let destName = eventSheet.getRange(i,eventRange.getLastColumn()).getValue();
if(eventSheet.getName() == sourceSheet.getName()) {
if (eventSheet.getName() == sourceSheet.getName() && eventRange.getColumn() == 1 && eventRange.getValue() == true) { //if a change happens on the source sheet & that change is in column 1 & the column 1 value becomes true
var rowNum = eventRange.getRow(); //get the row number of the checked row
var numColumns = eventSheet.getLastColumn(); //get the number of columns in the source sheet
const row = eventSheet.getRange(rowNum, 2, 1, numColumns).getValues(); //get all the data in the row of the checked row
var result = ui.alert( //warn the user they are about to save a record
'Are you sure you this student is ready to export? This will delete this row',
ui.ButtonSet.YES_NO);
if (result == ui.Button.YES) { //if the user clicks yes */
targetSheet.appendRow(row[0]); //add the row to the target sheet
sourceSheet.deleteRow(rowNum); //delete the row from the source sheet
} else { //if the user clicks no
const checkBox = sourceSheet.getRange(rowNum, 1); //get the selected checkbox
checkBox.setValue(''); //clear the checkbox
}
}
}
}
Я бы хотел, чтобы targetSheet был переменной, полученной из второго столбца данных, который соответствует имени листа. Итак, если в строке данных есть «bob» в столбце b, данные будут скопированы в bob, если это «john», они будут скопированы в john и т. Д. Прямо сейчас он работает для отправки данных с листа1 на лист2, отлично работает , но будет удобнее скопировать на лист на основе имени листа. Как я могу сделать targetSheet переменной? Пример листа: https://docs.google.com/spreadsheets/d/17Jo-emwVG199x19uiJUsX3q0xK9x-JIfUW45wGrTTIM/edit?usp=sharing