【问题标题】:How to pass a 2D (multidimentional) array when using a handler in Google App Script?在 Google App Script 中使用处理程序时如何传递二维(多维)数组?
【发布时间】:2013-12-20 06:12:41
【问题描述】:

我有几个带有自己的数据集和重置按钮的弹性表。当用户按下重置按钮时,我想清除弹性表并使用存储在二维数组中的原始数据重新填充弹性表。我知道如何清除弹性表,但重新填充弹性表给我带来了问题。我试图将二维数组保存到一个隐藏对象,如下所示:

var hidArry = app.createHidden("myArry", my2Darray).setId('HIDArry').setName('HIDArry');

在我创建按钮的另一个函数中,我将隐藏对象添加到按钮的处理程序中。

var buttonHandler = app.createServerHandler('ResetData').addCallbackElement(app.getElementById('HIDArry'));
var button = app.createButton("Reset", buttonHandler);

在“ResetData”函数中,我尝试像这样调用数组:

e.parameter.HIDArry

e.parameter.myArry

然而,这两种方法似乎都行不通。

【问题讨论】:

    标签: arrays multidimensional-array parameters google-apps-script parameter-passing


    【解决方案1】:

    当您的处理程序被调用时,所有参数都是字符串。因此,您首先需要 json.stringify 您的数组并将该字符串存储在您的隐藏中(或者隐藏的文本字段是我通常使用的)。

    【讨论】:

    • 感谢您的回复。所以我的二维数组混合了字符串和数字(​​不知道这是否重要)。当我尝试使用 JSON.stringify 并将其传递给文本框时,我遇到了问题。这就是我所做的: var temp = JSON.stringify(my2Darray); var hidArry = app.createTextBox().setId('HIDArry').setName('HIDArry').setValue(temp);似乎当我到达这里时,我的脚本返回了一个错误。我是脚本新手,不熟悉 json.stringify。
    • 调试它以查看错误来自哪里(例如使用 logger.log)。 stringify 只是将其转换为字符串,您应该可以 setValue
    • 好的,看来以这种方式保存它确实有效。我的数组现在在文本框中看起来像这样: [["test1", "text2",7,""],["text3","",4,""],["text4","",2 ,""],["text5","",8,""], ....] 错误似乎是由于试图从处理函数中调用它。当我尝试使用 app.add(app.createLabel(e.parameter.HIDArry)); 创建标签时我得到“不确定”。如果我尝试像这样保存它 var temp = e.parameter.HIDArry;这就是我得到错误的地方。
    • 错误一定来自其他地方。它只是一个和其他字符串一样的字符串。当你想将它转换回数组时,你需要 JSON.parse 。
    • 找到导致错误的原因。这非常有效。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    相关资源
    最近更新 更多