Google Apps脚本:动态创建电子表格菜单项
我正尝试使用Google Apps脚本在Google表格中创建一个动态填充的菜单。Google Apps脚本:动态创建电子表格菜单项
- 我有一张表'Classes',我列出了我教授的课程。
- 在运行我的脚本时,我使用脚本读取并将这些类加载到数组中。
- 为了只在原来的'类'表中硬编码值,我想然后为每个类创建一个子菜单项。
该工作表被称为'类'。 课程表中的值为8H,9p1,9p2等。 它们在单元格A1:A12中。 在调试器中,数组menuItemArray会正确加载'Classes'表中所有预期的类。
我得到的错误是:
TypeError: Cannot find function addSubMenu in object 9p1. (line 13, file "Code")
这是步入线的时候
menuItemArrayClass = menuItemArray [menuCount]
我将是任何帮助,以什么我做错了或者更好的方法真的很感激去做吧。
这里是我的代码:
function onOpen(e) {
var ui = SpreadsheetApp.getUi();
var menuCount = 0;
ui.createMenu('Manage Timetable')
.addItem('First item', 'menuItem1')
.addSeparator()
var menuItemArray = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Classes').getDataRange().getValues();
for (menuCount=1;menuCount < menuItemArray.length;++menuCount) {
var menuItemArrayClass = []
menuItemArrayClass = menuItemArray [menuCount]
.addSubMenu(ui.createMenu('Manage Classes')
.addItem(menuItemArrayClass [menuCount] + 'Schedule Timetable', 'runBatch1'))
.addToUi();
}
}
试试这个:
function onOpen(e) {
var ui = SpreadsheetApp.getUi();
var menuCount = 0;
var menu = ui.createMenu('Manage Timetable');
menu.addItem('First item', 'menuItem1')
menu.addSeparator()
var menuItemArray = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Лист2').getDataRange().getValues();
for (menuCount=0;menuCount < menuItemArray.length;menuCount++) {
var menuItemArrayClass = []
menuItemArrayClass = menuItemArray [menuCount];
menu.addSubMenu(ui.createMenu('Manage Classes')
.addItem(menuItemArrayClass + ' Schedule Timetable', 'runBatch1'))
menu.addToUi();
}
}
如果从1个你失去第一行开始,所以我现在已更改为0。
而且需要动态分配脚本,但我不知道它们是如何在表单中设置的,因此我保持不变。
还不确定是否需要每次添加“管理类”菜单,但我保留它以防万一。
试试这个,因为它似乎更喜欢你想要的东西:
function onOpen(e) {
var ui = SpreadsheetApp.getUi();
var menuCount = 0;
var menu = ui.createMenu('Manage Timetable')
.addItem('First item', 'menuItem1')
.addSeparator();
var subMenu = ui.createMenu('Manage Classes');
var menuItemArray = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Лист2').getDataRange().getValues();
for (menuCount=0;menuCount < menuItemArray.length;menuCount++) {
var menuItemArrayClass = []
menuItemArrayClass = menuItemArray [menuCount];
subMenu.addItem(menuItemArrayClass + ' Schedule Timetable', 'runBatch1');
}
menu.addSubMenu(subMenu).addToUi();
}
Akshin - 很多很多的感谢,它的工作原理! –
请检查我的答案是否正确 –
非常感谢Akshin我会给一个尝试,谢谢,西蒙 –