Dynamic 在菜单UI内使用循环脚本初学者

Dynamic 在菜单UI内使用循环脚本初学者,dynamic,drop-down-menu,google-sheets,Dynamic,Drop Down Menu,Google Sheets,我试图创建一个动态菜单,创建其中的工作表名称。我不经常编码,需要一些帮助。目前,Open上的代码创建一个菜单,在菜单中创建它的第一个项目,然后添加一个分隔符,然后进入一个循环。它检查有多少张纸,并从第一张开始。存储名称并使用该名称创建菜单项,然后前进到下一页。获取其名称并生成下一个菜单项。我可以让循环使用菜单UI语法。我不担心名称。接下来我将尝试解决这个问题,只是希望它首先创建菜单 function onOpen() { var spreadsheet = SpreadsheetApp.g

我试图创建一个动态菜单,创建其中的工作表名称。我不经常编码,需要一些帮助。目前,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');
    } 

}
函数onOpen(){ var电子表格=SpreadsheetApp.getActiveSpreadsheet(); var numsheets=电子表格.getNumSheets(); SpreadsheetApp.getUi .createMenu('SWMS CREATER') .addItem('创建新SWMS','显示提示') .addSeparator() 对于(变量i=0;iOP试图创建一个动态菜单,列出电子表格中的每个工作表。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();
}
函数onOpen(){ var ui=SpreadsheetApp.getUi(); var menu=ui.createMenu('OPSWMS CREATER') .addItem('创建新SWMS','显示提示') .addSeparator(); var sheetList=SpreadsheetApp.getActiveSpreadsheet().getSheets(); var subMenu=ui.createMenu('OPTest Menu'); 对于(变量i=0;i 主要差异摘要:

1) 变量
ui
移出循环;然后尽可能重复使用。
2) 变量
菜单
已建立并移出循环。这可用于在最后一行代码中添加子菜单。
3) 在
.addSeparator()
之后添加了分号(尽管是可选的)
4) 过去常常拿到所有的床单这是OP代码中缺少的第一个关键元素
5) 已删除
var numsheets
行。您不需要这个,因为您可以在
图纸列表上获得相同的计数

6) 在循环中,有两件事需要注意

  • sheetList[i]
    方括号中的i(
    [i]
    )返回“sheetList”中的相关项
  • 返回工作表的名称。组合使用,
    sheetList[i].getName()
    为您提供工作表的名称,并允许您将其添加为菜单项选择
7)
menu.addSubMenu(subMenu.addToUi()这会将循环的内容添加到菜单中这是OP代码中缺少的第二个关键元素

信贷

Akshin Jalilov对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();
}
函数onOpen(){ var ui=SpreadsheetApp.getUi(); var menu=ui.createMenu('OPSWMS CREATER') .addItem('创建新SWMS','显示提示') .addSeparator(); var sheetList=SpreadsheetApp.getActiveSpreadsheet().getSheets(); var subMenu=ui.createMenu('OPTest Menu'); 对于(变量i=0;i
主要差异摘要:

1) 变量
ui
移出循环;然后尽可能重复使用。
2) 变量
菜单
已建立并移出循环。这可用于在最后一行代码中添加子菜单。
3) 在
.addSeparator()
之后添加了分号(尽管是可选的)
4) 过去常常拿到所有的床单这是OP代码中缺少的第一个关键元素
5) 已删除
var numsheets
行。您不需要这个,因为您可以在
图纸列表上获得相同的计数

6) 在循环中,有两件事需要注意

  • sheetList[i]
    方括号中的i(
    [i]
    )返回“sheetList”中的相关项
  • 返回工作表的名称。组合使用,
    sheetList[i].getName()
    为您提供工作表的名称,并允许您将其添加为菜单项选择
7)
menu.addSubMenu(subMenu.addToUi()这会将循环的内容添加到菜单中这是OP代码中缺少的第二个关键元素

信贷
Akshin Jalilov对