Как добавить полосу прокрутки в модальное диалоговое окно GAS?

Мне интересно, как я могу добавить полосу прокрутки в свой код скрипта Google Apps, чтобы я мог прокручивать свой список элементов в диалоговом окне.

Метод боковой панели моего кода (идентичный, за исключением showModalDialog и showSidebar) ДЕЙСТВИТЕЛЬНО прокручивается, а метод Dialog - нет.

Я пробовал добавить overflow: auto; и переполнение: прокрутка; практически для каждого div, который я могу найти, без каких-либо результатов (хотя для iFrame в GAS уже должен быть установлен автоматический режим?).

Единственная информация, которую я могу найти, относящаяся к скрипту приложений, диалоговым окнам и полосам прокрутки, - это app.createScrollPanel, которая в прошлом году устарела.

Вот код, который я использую:

function showSidebarAdd() {
var ui = SpreadsheetApp.getUi();
  var addUi = HtmlService.createTemplate(getAddUi()).evaluate().getContent();
  var html = HtmlService.createTemplate(addUi+
                                       "<script>\n" +
                                       "var data = "+
                                       getInvData()+
                                       "</script>")
                                       .evaluate()
                                       .setTitle('Add Items to Inventory')
                                       .setSandboxMode(HtmlService.SandboxMode.IFRAME)
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.setActiveSheet(ss.getSheetByName('Unsorted Inventory'));
  ui.showSidebar(html);
}

function showDialogAdd() {
  var ui = SpreadsheetApp.getUi();
  var addUi = HtmlService.createTemplate(getAddUi()).evaluate().getContent();
  var html = HtmlService.createTemplate(addUi+
                                       "<script>\n" +
                                       "var data = "+
                                       getInvData()+
                                       "</script>")
                                       .evaluate()
                                       .setSandboxMode(HtmlService.SandboxMode.IFRAME)
                                       .setWidth(500)
                                       .setHeight(850)
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    ss.setActiveSheet(ss.getSheetByName('Unsorted Inventory'));
    ui.showModalDialog(html,'Add Items to Inventory');
}

Вот как выглядит версия с полосой прокрутки: Боковая панель

Вот как выглядит версия диалога: Dialog

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

Заранее спасибо!


person Justin Mai    schedule 15.11.2015    source источник
comment
В вашем коде используется функция getAddUi(), которая не определена. Нам нужно воспроизвести проблему.   -  person Alan Wells    schedule 15.11.2015
comment
Прости за это. Однако есть небольшой код для отображения содержимого:   -  person Justin Mai    schedule 16.11.2015
comment
function getAddUi(data) { var html = HtmlService.createTemplateFromFile('addUi'); return html.evaluate().getContent(); } HTML-файл addUI-код довольно длинный   -  person Justin Mai    schedule 16.11.2015
comment
Ok. Я просто пытаюсь понять, вопрос ли это скрипта приложений или вопрос HTML. Это могло быть и то и другое понемногу. Можете ли вы воспроизвести проблему с помощью небольшого количества очень простого HTML? Я скопировал и вставил ваш код в Apps Script, чтобы посмотреть, смогу ли я найти проблему, но мне нужно было бы самому создать некоторый HTML, чтобы проверить ваш код, и я не знаю, поможет ли мне созданный мной HTML вообще .   -  person Alan Wells    schedule 16.11.2015


Ответы (2)


«Чтобы изменить размер уже открытого диалогового окна, вызовите google.script.host.setWidth (width) в коде на стороне клиента».

Документация Google

person Alan Wells    schedule 16.11.2015

Решил мою проблему! Удалив .setHeight () при создании диалогового окна, полоса прокрутки появляется и работает правильно.

person Justin Mai    schedule 17.11.2015