javascript - 同一脚本中的 Google 文档、Google 表格或 Google 幻灯片的插件菜单?
问题描述
期望的情况
有一个干净的包装函数确定当前正在使用的 GSuite 应用程序(在我的例子中是文档、表格或幻灯片)并相应地设置 UI。
初始代码设置
请注意,我使用 Babel 将代码转换为与 ECMAscript2015/AppScript 兼容的 JS 代码。我的问题仅与检查内容的整体逻辑有关。
export function onInstall(e) {
onOpen(e);
}
function onOpen(e) {
let ui = '';
typeof SpreadsheetApp === 'undefined' ? (ui = DocumentApp.getUi()) : (ui = SpreadsheetApp.getUi());
ui.createMenu('My Addon')
.addItem('Open SideBar', 'showMySidebar')
.addToUi();
}
function showMySidebar() {
const ui = HtmlService.createHtmlOutputFromFile('sidebar').setTitle('My Sidebar');
let env = '';
typeof SpreadsheetApp === 'undefined' ? (env = DocumentApp.getUi()) : (env = SpreadsheetApp.getUi());
env.showSidebar(ui);
}
结果
这仅适用于 Google 表格。尝试在 Google Docs 中将脚本作为插件运行时,出现错误“无法从该上下文执行 SpreadsheetApp.getui()”。
当前代码设置
export function onInstall(e) {
onOpen(e);
}
function onOpen(e) {
let ui = '';
try {
ui = SpreadsheetApp.getUi();
} catch (e) {
ui = DocumentApp.getUi();
}
ui.createMenu('My Addon')
.addItem('Open SideBar', 'showMySidebar')
.addToUi();
}
function showMySidebar() {
const ui = HtmlService.createHtmlOutputFromFile('sidebar').setTitle('My Sidebar');
let env = '';
try {
env = SpreadsheetApp.getUi();
} catch (e) {
env = DocumentApp.getUi();
}
env.showSidebar(ui);
}
结果
这适用于谷歌文档和谷歌表格,但不适用于谷歌幻灯片
挑战
如何在 Apps 脚本中动态检查环境?
任何想法和见解将不胜感激。
解决方案
推荐阅读
- python - Python LSTM 比特币预测平线
- r - caret::predict 给出错误:$ 运算符对原子向量无效
- asp.net-core - 获取请求后,Azure 上托管的 Web API 不返回本地数据
- python - 如何使用基于 windows 的 python 代码随机更改 Windscribe VPN
- javascript - Underscore _.map 和 JS 内置函数有什么区别吗?
- bash - ssh 配置文件可以从另一个文件中读取吗?
- powershell - 尝试从批处理文件运行 PowerShell 命令时出现错误
- javascript - 是否可以将 1 个 JS 文件用于 2 个 HTML?
- isabelle - Isabelle/HOL中如何证明反函数的存在?
- ajax - Shopify:如何呈现推荐的产品?