Мне нужно при каждом открытии электронных таблиц проверять наличие доступных листов в электронной таблице и создавать надстройку списка, которая позволяет перейти к конкретному листу, щелкнув в списке элементов
Количество листов будет большим и будет динамически добавляться в процессе работы.
Я сейчас блокирую, чтобы эта "фиктивная" функция принимала параметры, поэтому при вызове она должна открывать лист по его индексу.
function onOpen() {
var monthPlanShortcuts = SpreadsheetApp.getUi().createMenu("Month Plan Shortcuts");
var gotoSheet = SpreadsheetApp.getUi().createMenu("Go to sheet");
// get properties to know who is the editor
var userProperties = PropertiesService.getUserProperties();
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
if (sheets.length > 1) {
for (var index = 0; index< sheets.length;index++)
{
var currentIndex = userProperties.setProperty("index",index);
gotoSheet.addItem(sheets[index].getName(),"dummy");
}
}
monthPlanShortcuts
.addItem('View Current Week Plan', 'gotoCurrentWeek')
.addItem('Go to Specific Week', 'gotoSpecificWeek')
.addSeparator()
.addSubMenu(gotoSheet)
.addToUi();
}
какие-либо предложения??
.addItem('Title of Menu Item', 'function name')
вызываемой функции. Таким образом, невозможно сделать то, что вы хотите за один шаг из меню. Вам нужно будет открыть диалоговое окно или боковую панель из меню. Или откройте боковую панель автоматически при открытии электронной таблицы, и с помощью HTML и JavaScript вы можете создать что-то, что будет связывать имя листа с любым кодом, который вы хотите запустить. - person Alan Wells   schedule 07.02.2017