GUI未将值传递给电子表格

时间:2012-05-16 22:50:04

标签: google-apps-script

我创建了一个带有流程面板(MyGui)的GUI(mainPanel),一个文本框(textValue)和一个按钮(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);
}

3 个答案:

答案 0 :(得分: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旨在从电子表格而非服务中使用。  服务会创建一个网页而不是一个弹出框。

涡流。

答案 1 :(得分:0)

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

此外,可以使用窗口小部件name(您必须在GUI构建器上设置)在处理函数中访问窗口小部件的值。请注意nameid之间的区别,用于使用getElementById获取小部件的ID,以及确定事件的小部件source时使用相同的内容多个小部件的处理程序。以及name用于访问该值。您确定将文本框命名为textValue吗?

答案 2 :(得分:0)

为我修复的是进入UI编辑器并确保为表单字段和名称分配了ID。我错过了这个名字所以我的e.parameter.fieldName未定义。