有没有一种方法可以在应用程序脚本中使用JavaScript为对象创建方法字典?

有没有一种方法可以在应用程序脚本中使用JavaScript为对象创建方法字典?,javascript,google-apps-script,google-sheets,google-forms,Javascript,Google Apps Script,Google Sheets,Google Forms,我正在尝试为GoogleSheets制作一个脚本,它使用电子表格创建表单。我将表的列(加载到对象“dataObject”)中的值传递到一个对象数组中,如图所示 for (var i = 0; i < dataObject.length; i++) { dataObjectArray[i] = { question: dataObject[i][3], type: dataObject[i][4],

我正在尝试为GoogleSheets制作一个脚本,它使用电子表格创建表单。我将表的列(加载到对象“dataObject”)中的值传递到一个对象数组中,如图所示

  for (var i = 0; i < dataObject.length; i++)
  {
      dataObjectArray[i] = {
          question:    dataObject[i][3],
          type:        dataObject[i][4],
          help:        dataObject[i][5],
          choices:     dataObject[i][6],
          options:     dataObject[i][7],
          validation:  dataObject[i][8]
      }
  }
然后我会调用表单创建函数,如下所示:

   for (var i = 1; i < dataObjectArray.length; i++){
    formDictionary[dataObjectArray[i].question]();
  }
for(var i=1;i
目前,我收到了错误信息:
TypeError:在对象[object]中找不到未定义的函数。(第113行,文件“代码”)

我知道我尝试过的方法可能有很多问题(我自己也发现了一些),但我找不到更好的解决办法


如果可能的话,我希望避免使用switch语句,但如果它们是我唯一的选择,我会使用它们。

使用javascript原型

function MyFunction(){
  return
}

MyFunction.prototype = {
  test1:(function(){return "Hello"}),
  test2:(function(){return "World"}),
}
var foo =  new MyFunction();
Logger.log(foo.test1() +" "+ foo.test2())

使用
Logger.log()
语句将信息打印到日志中。然后从菜单中选择查看、日志。检查值是否符合预期。我们需要知道你的期望与你得到的相比是什么。@SandyGood我实际上一直在这样做,但没有从中得到任何有用的信息。我可以告诉您,第一个for循环中的
dataObjectArray
已正确加载。在我添加最后的
for
循环之前,脚本运行得很好。另外,我在问题中添加了错误描述。错误消息表示函数未定义。函数是
question()
,也是对象中的一个属性。因此问题可能出在
dataObjectArray
对象上。如果
dataObjectArray
不是全局变量,并且调用
dataObjectArray
的函数位于不同的函数中,则
dataObjectArray
中的数据可能已丢失。您是否在定义对象的同一个函数中调用了
dataObjectArray
对象?我在做什么?字典?调用字典的函数?一个
原型如何形成
对象?我没有找到任何文档。这是一些来自Mozilla的文档:这是关于prototype的StackOverflow答案:
function MyFunction(){
  return
}

MyFunction.prototype = {
  test1:(function(){return "Hello"}),
  test2:(function(){return "World"}),
}
var foo =  new MyFunction();
Logger.log(foo.test1() +" "+ foo.test2())