Google WebApps&菜单

时间:2013-09-01 05:29:54

标签: google-apps-script google-api google-sheets

由于缺乏对此的讨论,我不确定我是否错过了这一点,但是......

如果我有用户通过自定义菜单使用和查看电子表格,我需要将此应用程序部署为webapp以管理保护设置和实现API(可视化查询等),架构需要看起来像什么?从我在这里看到的,菜单将不会显示,所以我如何获得在一个屋檐下工作所需的一切?

Extend Google Spreadsheets UI with a Google Web App

2 个答案:

答案 0 :(得分:1)

您可以拥有一个部署菜单的脚本以及作为Web应用程序工作的脚本。 您可以在电子表格的onOpen功能中部署菜单。并且您有一个doGet函数来编写您的Web应用程序代码(通常是UI)。通过服务URL而不是电子表格访问Web应用程序。

编辑: 要在电子表格中显示Web应用程序UI,您可以在其他功能中生成相同的UI,并从自定义菜单中调用该功能。您可能希望更改UI的尺寸以适应您的网络应用的尺寸

function onOpen(){
   var menu = [{name: 'Show UI', functionName: 'showUI'}];
   ss.addMenu('Show Custom UI', menu);
}

/* If you are using HtmlService to build a web app UI */
function showUI() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var html = HtmlService.createHtmlOutputFromFile('index'); // index.html houses your web app's UI code.
  ss.show(html);
}

/* If you are using UIApp to build a web app UI */
function showUI() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var app = UiApp.createApplication();

  /* Build UI here */

  ss.show(app);
}

答案 1 :(得分:1)

通过在Google上孜孜不倦地狩猎拼凑了许多不同的资源后,我发现你实际上可以从SpreadsheetApp自定义菜单中启动WebApp,而且它并没有那么难。

您只需正常部署WebApp,并使用脚本的“项目属性”“文件”菜单选项来检索“项目密钥”。您只需复制/粘贴到您的客户端SpreadsheetApp的“查找图书馆”框as described here

安装库后,您可以添加自定义菜单以调用Library的doGet()&返回要在客户端SpreadsheetApp中显示的app对象:

function Shoo() {

  var app = FooManShoo.doGet();
  SpreadsheetApp.getActiveSpreadsheet().show(app);

}

function onOpen() {

  var entries = [{name : 'man', functionName : 'Shoo'}];
  SpreadsheetApp.getActiveSpreadsheet().addMenu('foo', entries);                   

}

希望这有助于其他人! :)