Самый первый вопрос о Stack Exchange, надеюсь, он имеет смысл.
Немного предыстории: я работаю в школе и помогаю персоналу службы поддержки обучения в создании более удобочитаемых расписаний для определенных учеников.
Они копируют данные расписания с нашего веб-сайта, которые содержат коды предметов, имена учителей и номера комнат. Он находится в том же формате, что и на изображении ниже - я просто скопировал его в Google Таблицы.
По сути, мне нужно выполнить массовый поиск и замену всех этих кодов и полностью развернуть их, чтобы, например, код темы 01ENG02 становится английским, а код учителя, например JBO становится "Joe Bloggs"
У меня есть полный список того, что мне нужно, чтобы коды расширялись - просто как лучше всего это реализовать.
Вот код Google Scripts, который я нашел как на Stack Exchange, так и на других сайтах, которые я использую:
function runReplaceInSheet(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("StudentTimetableEntry");
// Replace Subject Names
replaceInSheet(sheet, /\d\dART\d\d/g, "Art");
replaceInSheet(sheet, /\d\dCCL\d\d/g, "Communication & Culture");
replaceInSheet(sheet, /\d\dDLT\d\d/g, "Digital Technology");
replaceInSheet(sheet, /\d\dDRA\d\d/g, "Drama");
// Replace Staff Names
replaceInSheet(sheet, 'TED', 'Tahlee Edward');
replaceInSheet(sheet, 'TLL', 'Tyrone LLoyd');
replaceInSheet(sheet, 'TMA', 'Timothy Mahone');
replaceInSheet(sheet, 'TQU', 'Tom Quebec');
}
function replaceInSheet(sheet, to_replace, replace_with) {
//get the current data range values as an array
var values = sheet.getDataRange().getValues();
//loop over the rows in the array
for (var row in values) {
//use Array.map to execute a replace call on each of the cells in the row.
var replaced_values = values[row].map(function(original_value) {
return original_value.toString().replace(to_replace, replace_with);
});
//replace the original row values with the replaced values
values[row] = replaced_values;
}
//write the updated values to the sheet
sheet.getDataRange().setValues(values);
}
Это прекрасно работает. Однако у меня более 150 имен сотрудников и примерно такое же количество тематических кодов. Процесс достигает максимального времени, и я уверен, что должен быть лучший способ кодирования этого.
Я рассмотрю альтернативные методы, но имейте в виду, что они должны быть максимально простыми для сотрудников, которые будут их использовать.