在菜单UI脚本初学者中使用循环
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在菜单UI脚本初学者中使用循环相关的知识,希望对你有一定的参考价值。
我正在尝试创建一个动态菜单,在其中创建工作表的名称。我不经常编码,需要一些帮助。目前代码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');
}
}
答案
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
建立并且也移出了循环。这被重新用于在最后一行代码中添加subMenu。
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代码中缺少的第二个关键元素。
信用: Aqtim Jalilov对Quetsswep的回答
以上是关于在菜单UI脚本初学者中使用循环的主要内容,如果未能解决你的问题,请参考以下文章