Ссылка на конкретный лист во встроенной электронной таблице 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 по ссылке, но теперь скрипт больше не работает.

1 ответ

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