Я школьный учитель, пытаюсь разработать электронную таблицу с оценками по математике. Чтобы сделать его более автоматизированным, я пишу скрипт Google Apps, который извлекает математические стандарты для модуля на основе имени этого модуля. Я хочу, чтобы мой сценарий:
- Считал имя строки модуля (т.е. "Module_1") из ячейки на одном листе ("Активный набор данных")
- Найдите стандарты связанный с именем этого модуля на другом листе («Стандарты»)
- Вставка стандартов в заданный диапазон (standRange) в исходном листе
Я знаю, что мог бы, вероятно, достигли желаемого результата, используя проверку данных и именованные диапазоны, но я хотел бы сделать это программно. Поэтому я назначил стандарты для каждого модуля переменной, а затем поместил эти переменные в массив (модули). Мой сценарий должен был l oop пройти через массив и извлечь стандарты на основе имени модуля, который я искал. Я признаю, что такой подход не будет работать, потому что я сравниваю строку с именем переменной.
function standardSelect() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var entrySheet = ss.getSheetByName("Active Data Set");
entrySheet.getRange("E2").copyValuesToRange(entrySheet, 2, 2, 1, 1); //this is the name of the Module I want to pull standards for
var moduleName = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Active Data Set").getRange("E2").getValue();
var standRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Active Data Set").getRange("B2:D2"); //this is the place where I want to paste the standards
var stand = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Standards");
var Module_1 = stand.getRange("D5:F5").getValues(); //These are the standards associated with each module
var Module_2 = stand.getRange("J5:L5").getValues();
var Module_3 = stand.getRange("O5:Q5").getValues();
var Module_4 = stand.getRange("R5:T5").getValues();
var Module_5 = stand.getRange("U5:V5").getValues();
var Modules = [Module_1, Module_2, Module_3, Module_4, Module_5];
var ModuleNames = ["Module_1", "Module_2", "Module_3", "Module_4", "Module_5"];
for (var i = 0; i < Modules.length; i++) {
if (moduleName == Modules[i]) {
standRange.setValues(Modules[i])
}
}
}
Я подумал, что если я сделаю еще один массив с именами всех модулей, я мог бы как-то их соединить, но я действительно не знаю, как это сделать. По сути, мне нужно вызвать переменную внутри моего скрипта на основе строки внутри моей таблицы. Есть ли способ сделать это, используя пары ключ-значение? Сервис ScriptProperties? Я немного застрял, поэтому любые идеи будут оценены!