从Google Apps Script中获取文本框的值

3
我对Google的Apps Script是新手,我正在尝试为我的最终用户创建一个基本的UI,以查询数据(存储在Google电子表格中)并以格式化的/用户友好的方式显示数据。由于我想简单起见,并在学习Apps Script的同时添加组件,因此我决定创建一个基本表格,允许我在文本框中输入文本,然后将该值分配给标签(我认为这是创建基本表格组件,检索/分配值的简单练习)。不幸的是,我遇到了障碍,即没有getText()或TextBox.getValue()函数。我尝试搜索在线论坛/ Google等来找出解决方法,但我尝试的一切似乎都行不通(以前的搜索导致我尝试在事件处理程序中解决这个问题)。我的问题是:如果我有一个textBox('textBox1')和一个button('button1')以及一个label('label1'),当我单击button1时,我如何让我的web应用程序将我输入的textBox1中的值分配给label1? 我意识到这可能是最基本的问题,我知道以前已经问过了....但无论我怎么深入研究这些旧帖子,我似乎都无法弄清楚应该很容易的代码。非常感谢。

你没有搜索得很好...在这个论坛上使用gas标签进行简单的搜索就可以返回数十个结果...例如这个:简单而清晰! - Serge insas
1个回答

2
假设您有以下代码:
var textbox = app.createTextBox().setName("textboxName");
var buttonHandler = app.createServerHandler("updateLabelText").addCallbackElement(textbox);
var button = app.createButton("Click me").addClickHandler(buttonHandler);
var label = app.createLabel().setId("label");

然后在你的函数中:

function updateLabelText(e) {
  var app = UiApp.getActiveApplication();
  app.getElementById("label").setText(e.parameter.textboxName);
  return app;
}

需要注意的事项:

  1. 按钮处理程序必须给出在代码中定义的函数名称。
  2. 如果您想在函数中读取该元素的值,则按钮处理程序还必须给出“回调元素”。 您可以将面板添加为回调元素,面板上的任何内容都将添加到回调中。
  3. 回调元素的值通过e.parameter传递。属性名称是元素的名称。例如:e.parameter.textboxName
  4. 标签需要一个ID,以便您可以从其他函数中引用它。

针对您的“绊脚石”,应用脚本要求您明确地将值传递回脚本。这些脚本在Google的服务器上运行,因此除非您告诉它们文本框的值,否则它们不会知道它是什么。在此处阅读有关此内容的文档 - Phil Bozak
非常感谢您的迅速回复!我尝试了我认为是该方法,但我的问题是我得到的文本值变量出现了“未定义”的情况。这是我的当前代码: - user2061929
function doGet() { var app = UiApp.createApplication(); app.add(app.loadComponent("studentLookup01")); var handler = app.createServerClickHandler('testGetFunction'); handler.addCallbackElement(app.getElementById('sNameEntryBox')); app.getElementById('Button1').addClickHandler(handler); return app; } - user2061929
你可能需要设置sNameEntryBox的名称。名称和ID是识别元素的两种方式,看起来你不能从GUI Builder中设置元素的名称。所以请尝试这个:app.getElementById('sNameEntryBox').setName('sNameEntryBox'); 并将其放入你的doGet()函数中。 - Phil Bozak
啊哈!我把名称和ID搞混了,以为它们是同一件事。我感到困惑是因为我认为我已经设置了名称。非常感谢您的帮助!我很感激! - user2061929
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接