0

我创建了一个MyGui带有流面板 ( mainPanel)、文本框 ( textValue) 和按钮 ( ) 的 GUI ( getETA)。全部在站点脚本中。

这个想法是在文本框中输入一个值,单击按钮,然后将该值放置在电子表格的单元格 A1 中。

GUI 中没有配置处理程序,我已将脚本复制粘贴到新站点,但没有成功。

我遇到的问题是我在电子表格单元格中得到的只是“未定义”。此外,如果我对函数运行调试,clickGetETA我会收到以下错误消息:“无法从未定义中读取属性“参数””

我是新手,但我最好的猜测是 GUI 的细节没有传递给clickGetETA函数。我已经搜索了我能找到的,但我似乎找不到解决方案......

如果有人能告诉我哪里出错了,我会很感激他的帮助。

function doGet() {
    var app= UiApp.createApplication();
    app.add(app.loadComponent("MyGui"));
    var clickHandler = app.createServerHandler('clickGetETA');
    clickHandler.addCallbackElement(app.getElementById('mainPanel'));
    app.getElementById('getETA').addClickHandler(clickHandler);
    return app;
}

function clickGetETA(e) {
    var sheet = SpreadsheetApp.openById('abcdefghjklmnopqrstuvwxyz');
    var ss = sheet.getActiveSheet();
    var target = ss.setActiveCell("A1");
    target.setValue(e.parameter.textValue);
}
4

3 回答 3

2

改变:

var ss = sheet.getActiveSheet();
var target = ss.setActiveCell("A1");

到 :

var ss = sheet.getSheetByName("SheetName");
var target = ss.getRange("A1");

这种事情的好例子在这里: https ://developers.google.com/apps-script/guide_user_interfaces

它应该作为服务运行。即你使用get 函数。

注意:调试时不存在“e”参数。调试有点受限。ActiveSheet 和 ActiveCell 旨在从电子表格而非服务中使用。服务创建网页而不是弹出框。

涡流。

于 2012-05-17T00:46:31.533 回答
0

中使用的回调元素addCallbackElement可能是单个小部件或 GUI 的面板。传递面板时,面板层次结构中的所有小部件都将包含在参数中。您确定您的文本框在您要添加的面板内吗?

name此外,可以使用小部件(您必须在 GUI 构建器上设置)在处理程序函数中访问小部件的值。name请注意和 之间的区别,当您对多个小部件使用相同的处理程序时,您使用id该 id 来获取小部件getElementById并确定source事件的小部件。以及name用于访问该值。你确定你把你的文本框命名为textValue

于 2012-05-17T00:45:07.190 回答
0

为我解决的问题是进入 UI 编辑器并确保我为表单字段分配了一个 ID和一个 name。我错过了这个名字,所以我的 e.parameter.fieldName 是未定义的。

于 2012-06-15T04:33:39.413 回答