由于缺乏对此的讨论,我不确定我是否错过了这一点,但是......
如果我有用户通过自定义菜单使用和查看电子表格,并且我需要将此应用程序部署为 web 应用程序以管理保护设置并实现 API(可视化查询等),那么架构需要是什么样的?根据我在此处阅读的内容,不会显示菜单,那么如何获得在 1 个屋顶下工作所需的一切?
由于缺乏对此的讨论,我不确定我是否错过了这一点,但是......
如果我有用户通过自定义菜单使用和查看电子表格,并且我需要将此应用程序部署为 web 应用程序以管理保护设置并实现 API(可视化查询等),那么架构需要是什么样的?根据我在此处阅读的内容,不会显示菜单,那么如何获得在 1 个屋顶下工作所需的一切?
您可以有一个脚本来部署菜单以及作为 Web 应用程序工作。您onOpen
在电子表格的功能中部署菜单。而且你有一个doGet
功能来编写你的网络应用程序代码(通常是 UI)。Web 应用程序是通过服务 URL 而不是电子表格访问的。
编辑:要在电子表格中显示 Web 应用程序 UI,您可以在不同的函数中生成相同的 UI,并从自定义菜单中调用该函数。您可能想要更改 UI 的尺寸以适合您的 Web 应用程序的尺寸
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,并使用脚本的“项目属性”文件菜单选项来检索“项目密钥”。您只需按照此处所述复制/粘贴到客户端电子表格应用程序的“查找库”框中
安装库后,您可以添加自定义菜单来调用库的 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);
}
希望这对其他人有帮助!:)