2014-10-12 2 views
0

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

Я пытаюсь поместить форму google в боковую панель документа google.

Прямо сейчас у меня есть плагин документа приложения скрипт, который открывает боковую панель отлично, и я могу открыть форму с помощью var form = FormApp.openById('form_id');

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

Я также не могу использовать iframe, поскольку они запрещены.

ответ

2

Хотя вы можете отображать форму google на боковой панели в электронной таблице или документе (см. Пример кода ниже), есть одна существенная информация: форма не работает, т. Е. Вы не можете отправить форму. Не уверен точно, почему, но я предполагаю, что это связано с ограничениями песочницы и/или кайзацией.

Я предлагаю вам создать собственную форму с помощью HTML и HTML Service (или UI Service) и показать это на боковой панели. Если вам нужна форма для сохранения ответов на электронную таблицу, вы также можете сделать это довольно легко. See this for more on info and code samples of using forms in HTML Service и this for using forms in UI Service. Скрипт на стороне сервера может открыть электронную таблицу и записать в нее значения формы, если это то, что вам нужно сделать.

Пример кода Add-on, чтобы показать форму Google в боковой панели в Google Sheet:

Примечание: Форма фактически не работает - она ​​не представляет, когда показано на боковой панели!

function showFormInSidebar() { 
    var form = FormApp.openById('YOUR-FORM-ID-HERE'); 
    var formContent = UrlFetchApp.fetch(form.getPublishedUrl()).getContentText(); 
    var ui = HtmlService.createHtmlOutput(formContent).setTitle("Google Form in Sidebar Example"); 
    SpreadsheetApp.getUi().showSidebar(ui); 
}; 

function onOpen(e) { 
    // Add this add-on to Add-ons menu 
    SpreadsheetApp.getUi().createAddonMenu() 
     .addItem('Show form', 'showFormInSidebar') 
     .addToUi(); 
}; 
+0

Хороший ответ ;-) но так как мне всегда интересно я копать немного глубже и обнаружил, что форма была на самом деле работает в режиме ЭМУЛИРОВАННЫЙ (вместо по умолчанию NATIVE). Основная проблема при использовании этого режима - это, конечно же, скорость выполнения, но он также пропускает информацию о каждом стиле, и форма становится довольно уродливой! Поэтому я согласен с тем, что ваше предложение по созданию вашей собственной формы в UiApp или HTMLService является, пожалуй, лучшим. +1 в любом случае. –

+0

Дополнительная информация: форма (в эмулированном режиме) должна быть анонимной, вход в систему недоступен, а авторизация не распространяется на одну из электронных таблиц ... другая полученная :-) –