【发布时间】:2013-09-01 05:29:53
【问题描述】:
由于缺乏对此的讨论,我不确定我是否错过了这里的重点,但是...
如果我有用户通过自定义菜单使用和查看电子表格,并且我需要将此应用程序部署为 web 应用程序以管理保护设置并实施 API(可视化查询等),那么架构需要是什么样的?根据我在此处阅读的内容,不会显示菜单,那么如何获得在 1 个屋顶下工作所需的一切?
【问题讨论】:
标签: google-apps-script google-api google-sheets
由于缺乏对此的讨论,我不确定我是否错过了这里的重点,但是...
如果我有用户通过自定义菜单使用和查看电子表格,并且我需要将此应用程序部署为 web 应用程序以管理保护设置并实施 API(可视化查询等),那么架构需要是什么样的?根据我在此处阅读的内容,不会显示菜单,那么如何获得在 1 个屋顶下工作所需的一切?
【问题讨论】:
标签: google-apps-script google-api google-sheets
您可以有一个脚本来部署菜单以及作为 Web 应用程序工作。
您在电子表格的onOpen 函数中部署菜单。你有一个 doGet 函数来编写你的 web 应用程序代码(通常是 UI)。 Web 应用程序是通过服务 URL 而不是电子表格访问的。
编辑: 要在电子表格中显示 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);
}
【讨论】:
在通过 Google 上的勤奋搜索拼凑出许多不同的资源后,我发现您实际上可以从 SpreadsheetApp 自定义菜单启动 WebApp,而且一点也不难。
您所做的一切都是照常部署 WebApp,并使用脚本的“项目属性”文件菜单选项来检索“项目密钥”。您只需将其复制/粘贴到您的客户端电子表格应用程序的“查找库”框as described here
安装库后,您可以添加自定义菜单来调用库的 doGet() 并返回应用对象以显示在您的客户端 SpreadsheetApp 中:
function Shoo() {
var app = FooManShoo.doGet();
SpreadsheetApp.getActiveSpreadsheet().show(app);
}
function onOpen() {
var entries = [{name : 'man', functionName : 'Shoo'}];
SpreadsheetApp.getActiveSpreadsheet().addMenu('foo', entries);
}
希望这对其他人有帮助! :)
【讨论】: