有没有一种方法可以在应用程序脚本中使用JavaScript为对象创建方法字典?
我正在尝试为GoogleSheets制作一个脚本,它使用电子表格创建表单。我将表的列(加载到对象“dataObject”)中的值传递到一个对象数组中,如图所示有没有一种方法可以在应用程序脚本中使用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],
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())
使用语句将信息打印到日志中。然后从菜单中选择查看、日志。检查值是否符合预期。我们需要知道你的期望与你得到的相比是什么。@SandyGood我实际上一直在这样做,但没有从中得到任何有用的信息。我可以告诉您,第一个for循环中的Logger.log()
已正确加载。在我添加最后的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())