【问题标题】:How do I retrieve the values associated with an array based on a string name of that array?如何根据数组的字符串名称检索与数组关联的值?
【发布时间】:2020-02-02 09:07:42
【问题描述】:

我是一名试图开发数学评估数据电子表格的学校教师。为了使其更加自动化,我正在编写一个 Google Apps 脚本,它根据模块的名称检索模块的数学标准。我希望我的脚本:

  1. 从一张表(“活动数据集”)的单元格中读取模块的字符串名称(即“Module_1”)
  2. 在不同的工作表中查找与该模块名称相关的标准(“标准”)
  3. 将标准粘贴到原始工作表中的给定范围 (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


【解决方案1】:

解决办法如下:

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==ModuleNames[i]){standRange.setValues(Modules[i])}
}

【讨论】:

    猜你喜欢
    • 2019-12-11
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多