Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script GUI应用程序脚本,返回;“未定义”;价值_Google Apps Script_Gui Builder - Fatal编程技术网

Google apps script GUI应用程序脚本,返回;“未定义”;价值

Google apps script GUI应用程序脚本,返回;“未定义”;价值,google-apps-script,gui-builder,Google Apps Script,Gui Builder,我创建了一个简单的GUI,它有一个流面板名称和IDmain panel,一个标签名称Label1一个文本框名称myTextBox,还有一个IDgetETA的按钮 我的目标是,如果我在文本框中输入一个值,然后单击submit den,则该值应写入电子表格。 我的问题是脚本在电子表格中返回未定义的值,而不是我输入的实际值 var app = UiApp.createApplication(); app.setTitle("My Application"); app.add(app.loadCompo

我创建了一个简单的GUI,它有一个流面板名称和ID
main panel
,一个标签名称
Label1
一个文本框名称
myTextBox
,还有一个ID
getETA
的按钮

我的目标是,如果我在文本框中输入一个值,然后单击submit den,则该值应写入电子表格。 我的问题是脚本在电子表格中返回未定义的值,而不是我输入的实际值

var app = UiApp.createApplication();
app.setTitle("My Application");
app.add(app.loadComponent("MyGui"));
SpreadsheetApp.getActiveSpreadsheet().show(app);
var clickHandler = app.createServerHandler('clickGetETA');
clickHandler.addCallbackElement(app.getElementById('mainPanel'));
app.getElementById('getETA').addClickHandler(clickHandler);
var doc = SpreadsheetApp.getActive();
doc.show(app);

}

 // this function responds to submit button
function clickGetETA(e) {
var app = UiApp.getActiveApplication();
var textBoxValue = e.parameter.myTextBox;
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow()+1;
var lastCell = sheet.getRange("A"+lastRow);
lastCell.setValue(textBoxValue);
return app.close();

}
我是新来的stackoverflow没有足够的声誉来发布图片,所以发布图片链接


我看到您在脚本和GUI生成器中定义了clickHandler。。。这是一个太多,这可能是问题的原因

请尝试删除GUI生成器中的一个,然后再次测试,我在测试中没有发现任何其他问题;-)

当然,您也可以删除脚本中的处理程序,但在这种情况下,您也应该通过在处理程序名称附近开发smal“+”来添加callback元素,并将面板放在那里

编辑:抱歉,GUI生成器中有两个处理程序,因此这太多了!不能在两种不同的处理程序类型上使用具有单一名称的单个处理程序(单击&key)。如果要在按钮上使用多个处理程序,则应定义所需的多个处理程序,每个处理程序都是所需的类型,最终调用相同的函数,但变量名称不同

编辑2行
SpreadsheetApp.getActiveSpreadsheet().show(应用程序)在主函数的开头也不存在,只需删除它,因为您稍后使用
var doc=SpreadsheetApp.getActive()调用电子表格

使用GUI工作代码

编辑3:issue solved通过共享提问表,小组名称未正确写入:
mainPanel
在脚本中,而
mainPanel
在GUI中。。。
啊,区分大小写!;-)(如图6所示)

为了舒适起见,我将您的链接转换为“真实链接”;-)。。。我已删除GUI中的键处理程序,并尝试将问题保持不变…返回未定义的值…是否在GUI生成器中删除了两个处理程序?否,我仅删除了键处理程序,是否希望我也删除单击处理程序?我还删除了GUI中的单击处理程序并尝试。。。但问题仍然是一样的。我复制了你的测试,它工作正常,请参阅链接