在我的Google 站点上,我插入了一个 Apps 脚本小工具(通过粘贴我作为服务发布的 Apps 脚本的 URL)。此 Apps 脚本允许用户输入一个值(他们的“Blow Number”)并查看相应的数据(基于对我的 Google Fusion 表的 API 调用)。
现在,脚本返回 3 个超链接:
- 单击此处查看第 1 号打击表
- 单击此处查看 Blow Number 1 的图表
- 单击此处查看第 1 次打击的地图
这是因为我的脚本函数getblowdetails
有 3 个app.createAnchor
变量。我希望脚本自动调用 3 个 URL 并在面板中显示表格、图表和地图,而不是让脚本返回 3 个超链接(用户必须单击并在新窗口中查看生成的 URL)在同一页上。
因此,用户将输入他们的 Blow Number 并按 Enter。然后,他们将直接查看同一网页上文本框下方的表格、图表和地图。
请查看我在下面包含的代码并提出建议...感谢您的帮助-我是应用程序脚本新手,因此非常感谢您提供全面且易于理解的响应!
代码
注意:我已经从 createAnchor 变量中删除了 URL,因为我只能在帖子中包含 2 个链接,但是您可以通过访问 www.OnSiteBAC.com/ViewMyBlows 并输入 Blow Number = 1 来查看它们...然后单击超链接。
function doGet() {
var app = UiApp.createApplication();
// Create input boxes, buttons, labels, and links
var textBoxA = app.createTextBox().setId('textBoxA').setName('textBoxA').setFocus(true);
var buttonA = app.createButton('Get Blow Details').setEnabled(false);
var label = app.createLabel('Please enter your Blow Number here');
var link = app.createAnchor('where can I find my Blow Number?', 'http://www.onsitebac.com');
// Create a handler to call the getblowdetails function.
// A validation is added to this handler so that it will only invoke 'getblowdetails' if textBoxA contains a number
var handler = app.createServerClickHandler('getblowdetails').validateNumber(textBoxA).addCallbackElement(textBoxA);
// Create a handler to enable the button if all input is legal
var onValidInput = app.createClientHandler().validateNumber(textBoxA).forTargets(buttonA).setEnabled(true).forTargets(label, link).setVisible(false);
// Create a handler to mark invalid input in textBoxA and disable the button
var onInvalidInput1 = app.createClientHandler().validateNotNumber(textBoxA).forTargets(buttonA).setEnabled(false).forTargets(textBoxA).setStyleAttribute("color", "red").forTargets(label, link).setVisible(true);
// Create a handler to mark the input in textBoxA as valid
var onValidInput1 = app.createClientHandler().validateNumber(textBoxA).forTargets(textBoxA).setStyleAttribute("color", "black");
// only fire ServerHandler for onKeyUp if it passes validation
var textBoxHandler = app.createServerHandler('textBoxHandlerFunction');
// Add all the handlers to be called when the user types in the text boxes
textBoxHandler.addCallbackElement(textBoxA);
textBoxA.addKeyUpHandler(onInvalidInput1);
textBoxA.addKeyUpHandler(onValidInput1);
textBoxA.addKeyUpHandler(onValidInput);
textBoxA.addKeyUpHandler(textBoxHandler);
buttonA.addClickHandler(handler);
app.add(textBoxA);
app.add(buttonA);
app.add(label);
app.add(link);
return app;
}
function textBoxHandlerFunction(e) {
var app = UiApp.getActiveApplication();
if (e.parameter.keyCode == 13)
{
app = getblowdetails(e);
}
return app;
}
function getblowdetails(e) {
var app = UiApp.getActiveApplication();
var panel2 = app.createVerticalPanel();
var link2 = app.createAnchor ().setStyleAttribute("color", "green");
var panel3 = app.createVerticalPanel();
var link3 = app.createAnchor ();
var panel4 = app.createVerticalPanel();
var link4 = app.createAnchor ();
panel3.add(link3);
app.add(panel3);
panel4.add(link4);
app.add(panel4);
return app;
}