【问题标题】:Using a loop within the menu UI script beginner在菜单 UI 脚本初学者中使用循环
【发布时间】:2019-02-09 06:48:25
【问题描述】:

我正在尝试创建一个动态菜单,用于在其中创建工作表的名称。我不经常编码,需要一些帮助。目前代码 ON_Open 创建一个菜单,在菜单中创建它的第一项,然后添加一个分隔符,然后进入一个循环。它检查有多少张纸并从第一张开始。存储名称并使用该名称创建一个菜单项,然后前进到下一张表。获取它的名称并制作下一个菜单项。我可以让循环使用菜单 UI 语法。我不担心名称。接下来我会尝试解决这个问题,只是希望它先创建菜单

function onOpen() {

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var numsheets = spreadsheet.getNumSheets();

  SpreadsheetApp.getUi
      .createMenu('SWMS CREATER')
      .addItem('Create New SWMS', 'showPrompt')
      .addSeparator()

 for ( var i = 0; i < numsheets.length;i++ ) {
    var ui = SpreadsheetApp.getUi();
    var subMenu = ui.createMenu('Test Menu');
    subMenu.addItem('Test script'i ,'showPrompt');
    } 

}

【问题讨论】:

    标签: dynamic drop-down-menu google-sheets


    【解决方案1】:

    OP 正在尝试创建一个动态菜单,其中列出了电子表格中的每个工作表。 OP 的代码非常接近工作 - 只有少量但重要的调整。

    function onOpen() {
    
      var ui = SpreadsheetApp.getUi();
      var menu = ui.createMenu('OPSWMS CREATER')
        .addItem('Create New SWMS', 'showPrompt')
        .addSeparator();
    
      var sheetList = SpreadsheetApp.getActiveSpreadsheet().getSheets();
      var subMenu = ui.createMenu('OPTest Menu');
    
      for (var i = 0; i < sheetList.length; i++) {
        subMenu.addItem(sheetList[i].getName(), 'showPrompt');
      }
      menu.addSubMenu(subMenu).addToUi();
    }
    

    主要差异总结:

    1) 变量ui 移出循环;然后在可能的情况下重复使用。
    2) 变量menu 已建立并移出循环。这被重新用于在最后一行代码中添加子菜单。
    3) 在.addSeparator() 之后添加一个分号(虽然是可选的)
    4) 使用.getSheets() 获取所有工作表。 这是 OP 代码中缺少的第一个关键元素
    5) 删除了var numsheets 线。您不需要这个,因为您可以在 sheetList 上获得相同的计数。
    6)在循环内,有两点需要注意

    • sheetList[i]方括号中的i([i])从“sheetList”返回相关项;
    • .getName() 返回工作表的名称。结合起来,sheetList[i].getName() 为您提供工作表的名称,并允许您将其添加为菜单项选择。

    7) menu.addSubMenu(subMenu).addToUi(); 这会将循环的内容添加到菜单中。 这是 OP 代码中缺少的第二个关键元素

    学分
    Akshin Jalilov 对Google Apps Script: Dynamically creating spreadsheet menu items的回答@

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 2013-06-16
      • 2012-11-19
      相关资源
      最近更新 更多