google-apps-script - 当变量在函数之外时,onOpen 菜单不起作用
问题描述
如果我使用仅具有此功能的脚本,我的 onOpen 功能会正确创建菜单项。但是每当我在它之后添加三个常量时,打开电子表格时菜单就不会出现。
作品:
function onOpen(e){
// This line calls the SpreadsheetApp and gets its UI
// Or DocumentApp or FormApp.
var ui = SpreadsheetApp.getUi();
// These lines create the menu items and
// tie them to functions we will write in Apps Script
ui.createMenu("Run Scripts")
.addItem("1. Import CSV Data", "importCSV")
.addItem("2. Copy Down Processing Formulas", "appendCSVrows")
.addItem("3. Process CSV Data", "processCSVData")
.addItem("4. Upload", "upload")
.addItem("5. Create Lead Sheet", "upload")
.addToUi();
}
不起作用:
function onOpen(e){
// This line calls the SpreadsheetApp and gets its UI
// Or DocumentApp or FormApp.
var ui = SpreadsheetApp.getUi();
// These lines create the menu items and
// tie them to functions we will write in Apps Script
ui.createMenu("Run Scripts")
.addItem("1. Import CSV Data", "importCSV")
.addItem("2. Copy Down Processing Formulas", "appendCSVrows")
.addItem("3. Process CSV Data", "processCSVData")
.addItem("4. Upload", "upload")
.addItem("5. Create Lead Sheet", "upload")
.addToUi();
}
const csvSheet = ss.getSheetByName("CSV Data");
const processingSheet = ss.getSheetByName("Processing Sheet");
const uploadSheet = ss.getSheetByName("Upload Sheet");
解决方案
我发现由于某种原因在函数之外有变量是行不通的。因此,您需要将所有变量都包含在函数中,并且简单的触发器 onOpen() 应该可以工作。我在这里找到了上面的解释:https ://stackoverflow.com/a/59227643/10312679
但我不想重写我的脚本,所以我发现这个解决方案可以覆盖上述问题。您只需在项目/脚本的触发器设置下手动创建一个 onOpen 触发器,如下所述:https ://stackoverflow.com/a/13527430/10312679
推荐阅读
- velocity - 速度解析 + 全局变量与宏
- c# - Mongodb + C#:如何查询子文档并按其最常用的顺序
- laravel - 配置路由护照 laravel
- reactjs - 在 material-ui mobile-date-time-picker 中更改 AM PM 标签文本
- android - 即使未启用应用检查,也没有请求的应用检查令牌
- nuxt.js - Nuxt Vanilla Site Body 属性
- python - 从张量张量流中获取索引
- java - 在没有 DocumentID 或 N1QL 的 CouchBase 集群中获取文档
- akka - 键入 Akka 测试套件中的 expectMsgAnyOf 和 expectMsgAllOf
- tensorflow - TimeDistributed(Conv1D) 和 TimeDistributed 之间的区别