【发布时间】:2020-02-02 09:07:42
【问题描述】:
我是一名试图开发数学评估数据电子表格的学校教师。为了使其更加自动化,我正在编写一个 Google Apps 脚本,它根据模块的名称检索模块的数学标准。我希望我的脚本:
- 从一张表(“活动数据集”)的单元格中读取模块的字符串名称(即“Module_1”)
- 在不同的工作表中查找与该模块名称相关的标准(“标准”)
- 将标准粘贴到原始工作表中的给定范围 (standRange) 中
我知道我可能已经使用数据验证和命名范围实现了预期的结果,但我想以编程方式执行此操作。所以我将每个模块的标准分配给一个变量,然后将这些变量放在一个数组(模块)中。我的脚本应该遍历数组并根据我正在寻找的模块的名称检索标准。我认识到这种方法行不通,因为我本质上是将字符串与变量名进行比较。
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 服务?我有点卡住了,所以任何想法都会受到赞赏!
【问题讨论】:
-
请分享您的电子表格副本并附上成功结果的示例。
-
感谢您的回复。我其实只是想通了。在 if 子句中,我需要根据 ModulesNames 数组检查 moduleName,然后从 Modules 中检索值。本质上只是交换两个变量。
标签: arrays string google-apps-script google-sheets