Можно сделать так.
Рядом с каждым из продуктов на листе меню создать ячейку в которой будет проверка данных (Что сделать,Посмотреть Состав)
Далее включаем отслеживание изменений в этом столбце. Если пользователь выбрал пункт "Посмотреть состав", тогда скрипт
1.Возвращает Выбраный пункт в исходное состояние
2. Переносит пользователя на лист "Состав" в нужную ячейку
Можно реализовать по другому
В самом низу меню сделать ячейку с проверкой данных (Посмотреть Состав, Продукт1,Продукт2,Продукт3 и.т.д.)
Включаем отслеживание в этой ячейки, всё остальное по аналогии
Включить отслеживание можно так:
Пример взят отсюда
https://docs.google.com/spreadsheets/d/1426DVhMo3-...
//Функция для отслеживания изменений
function onEdit(event) {
var sheet = event.source.getActiveSheet();//Лист в котором произошло изменение
var sheetName = event.source.getActiveSheet().getSheetName() // Получаем имя листа который активен
var actRng = event.source.getActiveRange();//Ячейка в которой произошло изменение
var Row = actRng.getRowIndex();.//Строка в котором произошло изменение
var Col = actRng.getColumnIndex();//Столбец в котором произошло изменение
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Лист1");//Лист где нужно изменения отлавливать
//Ниже включена проверка. Срабатывает если Изменения произошли в первой строке, в первом столбце, на листе "Лист1" и если это изменение не равно "Куда перейти"
if (Row == 1 && Col == 1 && sheetName == "Лист1" && sheet.getRange("A1").getValue() != 'Куда перейти' ) {
activat(sheet.getRange("A1").getValue())//Здесь переходим в функцию изменений
sheet.getRange("A1").setValue('Куда перейти') //Переводим ячейку выбора в исходное состояние
}
}
//Функция перехода (В данном случае она просто выделяет диапазон, но можно добавить и другой функциональности)
function activat(sheetName) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sheetName);
var range = sheet.getRange("A1:D10");//Какой диапазон выделить при переходе
range.activate();
}