К основному контенту

Как открыть ссылку с помощью Google Apps Script?

Часто возникает задача, в которой требуется по результатам работы скрипта открыть ссылку в новом окне/вкладке браузера.
В 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

Комментарии

  1. А как практически это реализовать? Есть пример?

    ОтветитьУдалить
    Ответы
    1. Просто копируете весь код, который приведен в проекте к себе в проект и запускаете.

      Удалить
    2. Да, в вашем проекте, который должен быть container-bound в какой-либо Таблице. Потом либо появится меню, либо вы можете запустить функцию openUrl() из проекта. В активной ячейке в это время должен быть какой-либо url.

      Удалить
    3. url как текст или гиперссылка?
      Окно title открывается и через секунду закрывается, а url из ячейки не открывается.
      Посмотрите: https://docs.google.com/spreadsheets/d/1v4qnhVCon0H6YfV6mhN5LWThAIUP5mSV_vWWaal-f8w/edit?usp=sharing

      Удалить
    4. Ок, согласен. Вам необходимо обновить настройки браузера в части всплывающих окон. Я обновил пост, чтобы было понятно как это сделать для Google Chrome

      Удалить
    5. Спасибо, всё получилось.

      Удалить
  2. Года 3 тому, тоже задавался таким вопросом, когда писал программу для учета личных финансов.

    В общем пришел к такому же выходу через html сервис.
    И реализация примерно такая же. Но также надо учитывать и то что у пользователя может быть какой-нибудь блокировщик скриптов который не позволит выполнить js.
    На этот случай я добавил

    < noscript >
    < meta http-equiv="refresh" content="0; url=https://..." >
    < /noscript >


    ---
    G-Apps-Script.COM - Русскоязычный учебник по google скриптам.

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

      Удалить
    2. Бывают различные способы блокирования скриптов.
      Я имел ввиду о блокировании скриптов во фреймах.

      Окна созданные при помощи html-сервис, их контент находится во фрейме.

      Понятно что если глобально отключен js, этот тег не поможет.
      Так как таблица и вовсе не запуститься.

      Удалить
    3. А, понятно. А можно пример? Мне кажется, что я что-то полезное упускаю.

      Удалить
  3. Обновил код проверки всплывающих окон. Теперь скрипт предлагает из включить, если не может открыть адрес.

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения из этого блога

Удаление строк по условию

Часто возникает задача удаления строк из Таблицы Google по какому-либо условию. Разнообразие условий так велико, что порой приходится создавать метод "удаления строк" снова и снова. Довольно утомительно. Для простых офсных скриптов можно применить сниппет, описанный ниже. Основная идея заключается в том, чтобы взять весь массив данных и перебрать его в обратном порядке. При переборе каждая строка передается в функцию обратного вызова, которая принимет решение удалить строку или нет. Для оптимизации количество последовательных строк суммируется, и для удаления применяется метод deleteRows(rowPosition, howMany) класса Sheet В примере ниже скрипт удаляет строки автивного листа, в которых ячейки из диапазона D27:D77 и F27:F77 попарно пустые

Триггеры Google Apps Script

Все триггеры в скриптах делятся по виду события, типу установки и области применения. Области применения Таблицы Формы Документы Сайты Автономные скрипты  События Open - происходит при открытии файла в приложении Гугл. Например, Формы создают это событие только при открытии в режиме редактирвоания. Edit - происходит при завершении ввода данных в ячейку Таблицы пользователем. Только Таблицы. Только пользователем. Install - автоматически вызывается при установке дополнения. Change - возникает при других (не изменение данных ячейки, например, назначение цвета или ширины колонки) изменених Таблицы вызванных пользователем. Только Таблицы. Только пользователем. Form submit - исполнится только тогда, когда придет ответ от респондента Формы. Time-driven - отложенный триггер действия, срабатывающий по истечении времени Get - событие отрабатывающее get-запросы к веб-приложению Post - событие отрабатывающее post-запросы к веб-приложению Типы установок Simple trig