Часто возникает задача, в которой требуется по результатам работы скрипта открыть ссылку в новом окне/вкладке браузера.
В Google Apps Script не существует методов взаимодействия с браузером. Единственная более-менее реальная связь между пользователем и сервером скрипта находится в интерфейсе реализуемой программы. Это может быть Таблица, Документ или Web приложение. Все они реализуются через HtmlService. Например,
Понятно, что в построенном
Идея обернутая кодом ниже по тексту.
Пользователь выбирает ячейку в Таблице (или все, что угодно, что формирует ссылку). На сервере На клиенте строится окно диалога, открывается новая вкладка браузера и закрывается окно диалога, при успешном выполнении условия. Иначе появляется сообщение, что переданный параметр не ссылка.
Этот метод имеет существенный недостаток. Современные браузеры запрещают открытие новых вкладок и окон без разрешения пользователя. Поэтому придется добавить правило в ваш браузер. Для Google Chrome перейдите по адресу chrome://settings/content/popups и добавьте в список разрешенных правило
В Google Apps Script не существует методов взаимодействия с браузером. Единственная более-менее реальная связь между пользователем и сервером скрипта находится в интерфейсе реализуемой программы. Это может быть Таблица, Документ или Web приложение. Все они реализуются через HtmlService. Например,
SpreadsheetApp.getUi().showModelessDialog(htmlOutput, "title");
Понятно, что в построенном
htmlOutput
, можно выполнить код для текущего window
. Например,
window.open(url, "_blank");
Идея обернутая кодом ниже по тексту.
Пользователь выбирает ячейку в Таблице (или все, что угодно, что формирует ссылку). На сервере На клиенте строится окно диалога, открывается новая вкладка браузера и закрывается окно диалога, при успешном выполнении условия. Иначе появляется сообщение, что переданный параметр не ссылка.
Этот метод имеет существенный недостаток. Современные браузеры запрещают открытие новых вкладок и окон без разрешения пользователя. Поэтому придется добавить правило в ваш браузер. Для Google Chrome перейдите по адресу chrome://settings/content/popups и добавьте в список разрешенных правило
https://[*.]google.com:443
А как практически это реализовать? Есть пример?
ОтветитьУдалитьПросто копируете весь код, который приведен в проекте к себе в проект и запускаете.
УдалитьИ html тоже?
УдалитьДа, в вашем проекте, который должен быть container-bound в какой-либо Таблице. Потом либо появится меню, либо вы можете запустить функцию openUrl() из проекта. В активной ячейке в это время должен быть какой-либо url.
Удалитьurl как текст или гиперссылка?
УдалитьОкно title открывается и через секунду закрывается, а url из ячейки не открывается.
Посмотрите: https://docs.google.com/spreadsheets/d/1v4qnhVCon0H6YfV6mhN5LWThAIUP5mSV_vWWaal-f8w/edit?usp=sharing
Ок, согласен. Вам необходимо обновить настройки браузера в части всплывающих окон. Я обновил пост, чтобы было понятно как это сделать для Google Chrome
УдалитьСпасибо, всё получилось.
УдалитьГода 3 тому, тоже задавался таким вопросом, когда писал программу для учета личных финансов.
ОтветитьУдалитьВ общем пришел к такому же выходу через html сервис.
И реализация примерно такая же. Но также надо учитывать и то что у пользователя может быть какой-нибудь блокировщик скриптов который не позволит выполнить js.
На этот случай я добавил
< noscript >
< meta http-equiv="refresh" content="0; url=https://..." >
< /noscript >
---
G-Apps-Script.COM - Русскоязычный учебник по google скриптам.
Не понятно, как это поможет. Если запрещено исполнение активного содержимого, то использование Таблиц будет сводиться к чтению сообщения о невозможности исползования.
УдалитьБывают различные способы блокирования скриптов.
УдалитьЯ имел ввиду о блокировании скриптов во фреймах.
Окна созданные при помощи html-сервис, их контент находится во фрейме.
Понятно что если глобально отключен js, этот тег не поможет.
Так как таблица и вовсе не запуститься.
А, понятно. А можно пример? Мне кажется, что я что-то полезное упускаю.
УдалитьОбновил код проверки всплывающих окон. Теперь скрипт предлагает из включить, если не может открыть адрес.
ОтветитьУдалить