Ссылка на конкретный лист во встроенных Google Таблицах

Из-за большого количества листов в моих таблицах Google я хочу создать ссылки на все листы на первом листе. Это работает в Google Таблицах со следующим кодом:

function goToSheet2() {
     goToSheet("Sheet2");
}
function goToSheet(sheetName) {
    var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
    SpreadsheetApp.setActiveSheet(sheet);
}

Дальнейшее объяснение того, как именно это сделать, можно найти в этой другой публикации о переполнении стека.

Однако после того, как вы встроили лист, он больше не работает. Я полагаю, это связано с тем, что этот скрипт заставляет вашу кнопку / изображение работать как ссылка (скрипт просто помогает вам найти подходящий #gid=), поэтому он фактически просто перезагружает всю страницу, что невозможно во встроенной версии.

Будем очень признательны за любые указатели в правильном направлении.

Изменить: теперь я знаю, почему это не работает. Как указано на этой странице:

Только пользователи, у которых есть разрешение на редактирование электронной таблицы, документа или формы, могут запускать связанный скрипт. Соавторы, у которых есть доступ только для просмотра, не могут открыть редактор сценария, хотя, если они сделают копию родительского файла, они станут владельцем копии и смогут увидеть и запустить копию сценария.

Однако я не могу понять, как превратить связанный скрипт в отдельный скрипт, который работает со встроенным файлом. Я пробовал опубликовать сценарий, «развернув его как веб-приложение», но это не сработало.

Редактировать 2: теперь у меня есть очень неэлегантный способ заставить скрипт работать со встроенной версией электронной таблицы, но таблица не такая, как я хочу.

Объяснение: В основном я меняю код iframe с этого:

<iframe src="https://docs.google.com/spreadsheets/d/SPREADSHEET-ID/pubhtml?widget=true&amp;headers=false&amp;chrome=false" height="500" width="500"></iframe>

К этому:

<iframe src="https://docs.google.com/spreadsheets/d/SPREADSHEET-ID/edit?usp=sharing?widget=true&amp;headers=false" height="500" width="500"></iframe>

Однако это заставило меня показать всю страницу Google Таблиц с меню и всем остальным. Однако сценарий работает, я могу перейти на другой лист, щелкнув изображение.

А теперь самое интересное: я могу скрыть меню, добавив &rm=minimal к ссылке, но теперь скрипт больше не работает.


comment
Вы пытались реализовать предложенное решение по предоставленной вами ссылке? Не могли бы вы подробнее рассказать о проблеме? Также укажите, если вы столкнулись с какой-либо ошибкой.   -  person Android Enthusiast    schedule 25.11.2016
comment
@ d.datul1990 Да, я реализовал решение, и, как я уже упоминал, оно работает в таблице или если вы вставляете общий документ, но не работает, если вы вставляете его со ссылкой на публикацию (предоставленная ссылка с помощью электронной таблицы Google, которая сделает его неотредактируемым и красивым и аккуратным). Я не знаю, насколько конкретнее я могу быть с этой проблемой, поскольку я уже изложил все, что пробовал и узнал об этом. Если у вас есть идеи, что еще я мог бы сделать, чтобы предоставить вам больше информации об этом, пожалуйста, дайте мне знать! И нет, ошибок не обнаружил.   -  person Ber    schedule 25.11.2016


Ответы (1)


Вам лучше создать код для отображения данных в формате HTML и развернуть его как веб-приложение. Исходя из этого, вы можете настроить отображение в веб-приложении соответствующих данных на основе сделанного выбора. Вы можете начать здесь: Расширение Google Таблиц, а затем просмотрите Служба HTML: создание и использование HTML в качестве отправной точки. Теперь вы можете встроить веб-приложение на любую веб-страницу через iFrame. Это сохранит его в режиме только отображения, и зрителю не нужны разрешения на доступ к файлу, так как вы можете запускать веб-приложение от своего имени.

person Karl_S    schedule 29.11.2016