Исполнение JS в HTML через google app script

415
03 января 2017, 00:16

Работаю в битриксе. Там используются google таблицы. При открытии документа, он по умолчанию открывается в новом окне. У окна вечно небольшой экранчик и при работе необходимо его вручную расширять. Хочу на событие onOpen() повесить код для увеличения окна на весь экран (ну или настроить на определённые проценты). Копаю в сторону ф-ии window.open() на JS. Сам я на нынешнем этапе совершенно незнаком с html и JS. Пытаюсь запустить примерно так: в CODE.gs:

function onOpen(){
   void WorkDo();
}
function WorkDo(){
//  var html = HtmlService.createHtmlOutputFromFile('Index444'); 
//  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
//      .showSidebar(html);
//  return SpreadsheetApp.getUi().showSidebar(HtmlService.createHtmlOutputFromFile('Example1'));
  return HtmlService.createHtmlOutputFromFile('Example1');
}
function doSomething(arrg) {
  Browser.msgBox(arrg);
}

в Example1.html:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      Win2 = window.self;
      Win2.resizeTo(100, 100);
      <!--google.script.run.doSomething(123);-->    
    </script>
  </head>
</html>

Почему-то, непосредственно код в html выполняется только тогда, когда я выполняю его через showSidebar. Не пойму почему. Ну и собственно, даже если я запускаю его через Sidebar, сама настройка размера экрана не происходит. Предполагаю, что window.self в этом случае - то окошко Sidebar. Поэтому не пойму, как мне так запустить html через само окошко документа, чтобы я смог потом на него сослаться и собственно настроить размеры окна в котором он открылся.
Если это совершенно не правильный путь, скажите, пожалуйста, куда копать?

Answer 1

Вы не сможете получить доступ к изменению размера родительского окна, т.к. скрипты исполняются в своих фреймах на своих хостах. Браузер будет препятствовать доступу к своему API Same-origin policy

В Таблицах используются Bound to Google Apps скрипты. Таким образом требуется использование текущего экземпляра интерфейса SpreadsheetApp.getUi()

Code.gs

function onOpen() {
    void workDo();
}
function workDo() {
    var userInterface = HtmlService.createTemplateFromFile('app').evaluate();
    // showModelessDialog() - метод расширения текущего ui, такой же как showSidebar()
    SpreadsheetApp.getUi().showModelessDialog(userInterface, 'title');
}

app.html

<!DOCTYPE html>
<html>
<head>
    <base target="_top">
</head>
<body>
    <script>
        var top = window.top;
        console.log(top);
        top.resizeTo(150, 150);
    </script>
</body>
</html>
READ ALSO
Приведение строки в численный формат

Приведение строки в численный формат

Уже всё разобралОсталось только приведение поля к числу

369
JavaScript APi google map

JavaScript APi google map

Есть карта на ней есть функция которая отображает имя или еще что-тоНо чтоб отобразилось окно маркера , надо на него нажжать

354
Где искать UTM метки? Нет ни в GET запросе ни в Cookies

Где искать UTM метки? Нет ни в GET запросе ни в Cookies

Подскажите где искать UTM метки у страницы? Мне говорят что достаточно зайти на сайт с Гугла или Яндекса, и тогда UTML метки якобы должны наличествоватьНо...

527
Javascript. Как поменять background-image?

Javascript. Как поменять background-image?

Всем привет! Есть такой код:

587