Как открыть сайт в новом окне из меню Google Sheets

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

Например, в этой демонстрации Google Sheet у нас есть родительское меню и подменю, которое открывает базовый веб-сайт в новом окне.

Google Sheets open Url

1. Добавить меню в Google Sheets

В качестве первого шага мы добавим пользовательское меню в Google Sheet и вызовем его из функции onOpen , чтобы меню всегда было доступно, когда пользователь открывает ваш Google Sheet.

 const onOpen = ( ) => { const ui = SpreadsheetApp . getUi ( ) ; const parentMenu = ui . createMenu ( '👩🏻‍💼 Digital Inspiration' ) ; parentMenu . addItem ( 'Visit our website' , 'openWebsite' ) ; parentMenu . addToUi ( ) ; } ;

2. Добавьте HTML для перенаправления веб-сайта

Создайте новый файл url.html в редакторе сценариев приложений и добавьте следующий код.

JavaScript использует метод window.open для открытия URL-адреса в новом окне, поскольку мы установили цель _blank .

 <! DOCTYPE html > < html > < body > < a href = " <?= url; ?> " target = " _blank " > Click here </ a > to open the webpage. </ body > < script > var windowReference = window . open ( '<?= url; ?>' , '_blank' ) ; if ( windowReference !== null ) { google . script . host . close ( ) ; } </ script > </ html >

Открыть окно во всплывающем окне

Если вы хотите открыть веб-сайт во всплывающем окне фиксированного размера вместо нового окна, функция будет написана так:

 < script > var windowFeatures = 'popup' ; var windowReference = window . open ( '<?= url; ?>' , 'scriptWindow' , windowFeatures ) ; if ( windowReference !== null ) { google . script . host . close ( ) ; } </ script >

Возвращаемое значение window.open будет нулевым, если окно было заблокировано встроенными в браузер блокировщиками всплывающих окон.

Всплывающее окно можно расположить в любом месте скрипта и изменить его размер до определенной высоты и ширины, изменив переменную windowFeatures, как показано ниже:

 // before var windowFeatures = 'popup' ; // after var windowFeatures = 'left=100,top=100,width=320,height=320' ;

Пожалуйста, ознакомьтесь с документацией MDN , чтобы узнать, как решить несколько проблем с удобством использования, связанных с открытием вторичного окна по ссылкам.

3. Открыть ссылку из Google Sheets

Далее мы напишем функцию Apps Script, которая будет вызываться из меню и запускать сайт в новом окне/вкладке.

 const openWebsite = ( ) => { const htmlTemplate = HtmlService . createTemplateFromFile ( 'url.html' ) ; htmlTemplate . url = 'https://digitalinspiration.com/' ; const htmlOutput = htmlTemplate . evaluate ( ) . setHeight ( 50 ) . setWidth ( 200 ) ; const ui = SpreadsheetApp . getUi ( ) ; ui . showModelessDialog ( htmlOutput , 'Open Website' ) ; Utilities . sleep ( 2000 ) ; } ;

Необходимо добавить функцию sleep , так как открытие окна может занять секунду или две. Если sleep не указан, диалоговое окно электронной таблицы откроется и мгновенно закроется без запуска веб-сайта.

Leave a Comment

Ваш адрес email не будет опубликован.