【发布时间】:2014-02-02 19:00:50
【问题描述】:
我创建了一个 Google Apps 脚本,但我有一个关于将变量传递给点击处理程序的问题。该脚本作为 Web 应用程序发布,并通过电子邮件中的 HTML 链接访问(它是业务请求的批准/拒绝表单)。当有人提交表单时,会向单击批准链接的批准者发送一封电子邮件。此链接包含以下变量:
?status=enteredInCC&rowNum=9
所以当他们点击链接时,脚本会启动,并进入function doGet(e) 块,相关代码在哪里:
var app = UiApp.createApplication();
var grid = app.createGrid(1, 2);
var label = app.createLabel('Please enter the item\'s PLU:')
var input = app.createTextBox().setId("input").setName("input");
grid.setWidget(0, 0, label);
grid.setWidget(0, 1, input);
var handler = app.createServerHandler("retrieveInput").addCallbackElement(input);
var button = app.createButton("OK", handler);
var panel = app.createVerticalPanel().setId("panel")
panel.add(grid);
panel.add(button);
app.add(panel);
return app;
这会导致点击处理程序:
function retrieveInput(e){
var input = e.parameter.input;
var app = UiApp.getActiveApplication();
var panel = app.getElementById('panel');
panel.clear();
app.add(app.createHTML('<h2>The request has been updated. You can close this window.</h2>'))
app.close()
return app;
}
所有这些都运行良好。但是,在 doGet(e) 函数的早期,一些信息是从 URL 收集并存储在变量中的。现在在retrieveInput(e) 中,我需要访问这些变量来对电子表格进行一些更新(就在panel.clear() 之后)。有什么想法吗?
【问题讨论】: