首页 > 解决方案 > 当变量在函数之外时,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");

标签: google-apps-scriptgoogle-sheets

解决方案


我发现由于某种原因在函数之外有变量是行不通的。因此,您需要将所有变量都包含在函数中,并且简单的触发器 onOpen() 应该可以工作。我在这里找到了上面的解释:https ://stackoverflow.com/a/59227643/10312679

但我不想重写我的脚本,所以我发现这个解决方案可以覆盖上述问题。您只需在项目/脚本的触发器设置下手动创建一个 onOpen 触发器,如下所述:https ://stackoverflow.com/a/13527430/10312679


推荐阅读