Google App Script WebApp,操作UI

时间:2012-06-22 11:23:55

标签: google-apps-script google-apps

嗨,大家好,

Google App Script可以在很多方面使用。我知道因为我已经尝试了其中一些,但我不是专家所以,情况就是这样。

我创建了一个电子表格 使用脚本编辑器附带的新UI Building创建表单。 命名为:gtest01
UI组成:

  • label,id = label_caption
  • 按钮1,id = button_hide,event-onmouseclick = hide_label
  • 按钮2,id = button_show,event-onmouseclick = show_label
  • 按钮3,id = button_message,event-onmouseclick = message_me

现在,代码是:

/* This is so when I want to just deploy it as a [webapp] using the
script editor -> Publish Deploy as Web App
*/
function doGet(e) {
 var app = UiApp.createApplication().setTitle("Sheet Application");
  app.add(app.loadComponent("gtest01"));
  Logger.log("Application UI Loaded");  
  return app;
}

function message_me(e) {  
  Browser.msgBox("my message"); 
}

function hide_label(e) {
  var app = UiApp.getActiveApplication();
  label =app.getElementById("label_caption");
  label.setVisible(false);
}

function show_label(e) {
  var app = UiApp.getActiveApplication();
  label =app.getElementById("label_caption");
  label.setVisible(true);
}

// this code is for when the spreadsheet is shared so they can access the form
function showform_() {
  var app = UiApp.createApplication();
  app.add(app.loadComponent("gtest01"));
  SpreadsheetApp.getActiveSpreadsheet().show(app); 
}

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [];
  menuEntries.push({name: "Show Form", functionName: "showform_"});
  ss.addMenu("e-Test", menuEntries);
}

第一种情况是共享电子表格时

  • 当点击菜单时,表单将加载 - 这很好
  • 当显示和隐藏按钮没有任何反应时 - 为什么以及如何修复 此?
  • 单击消息按钮时 - 将显示消息,但表单将显示 关闭,如何在不关闭表单的情况下显示消息?

第二种情况是发布为Webapp时。

  • 当Developer Link为Access时,UI始终更新 - 确定
  • 当URL链接为Access时,UI总是像它一样更新 缓存,我该如何解决这个问题?
  • 在开发链接上:当显示和隐藏按钮没有任何反应时 - 为什么以及如何 我能解决这个问题吗?
  • 在开发链接上:单击消息按钮时 - 将生成错误, 如何在WebApp上显示警报消息

请帮助我搜索并尝试了示例代码并在论坛中回答错过了什么。

谢谢

Nick Ace

2 个答案:

答案 0 :(得分:2)

第一种情况 当显示和隐藏按钮没有任何反应时 - 为什么以及如何修复它?

在你的功能中,最后使用return app。除非您返回app对象,否则UI不会更新。

如何在不关闭表单的情况下显示消息? - 试试 SpreadsheetApp.getActiveSpreadsheet().toast()

第二种情况

当URL链接是Access时,UI总是更新,就像它是缓存一样,我该如何修复它? - 将最新代码保存为版本

在开发链接上:当显示和隐藏按钮没有任何反应时 - 再次返回应用程序将处理此

在开发链接上:单击消息按钮时... - Web应用程序不支持Browser.msgBox。

答案 1 :(得分:1)

使用UI时,通常最好让所有内容都在这个Ui中发生,所以尽量避免使用Toast显示消息(因为它们在Web应用程序中都不受支持)。 由于您使用的是GUI,因此使用最初不可见的消息并使其在处理程序例程中可见时,应该非常容易使用标签。 请注意,除非您需要通过此操作执行其他操作,否则此类处理程序也可以是客户端处理程序。

至于你提出的其他问题,我们(非常快)的朋友Srik已经彻底回答了问题; - )