2014-11-12 2 views
2

В документах для HtmlService не указано, что это не должно работать, но похоже, что шаблонный подход ограничен проектами приложений для приложений веб-приложений.Сценарий Google Apps - служба HTML «createTemplateFromFile» недоступна из приложения (электронная таблица и т. Д.)?

Я пытаюсь использовать HTMLService для создания пользовательского интерфейса внутри SpreadSheet, который может принимать некоторый начальный контекст, а затем взаимодействовать с листом. Однако при попытке использовать «createTemplateFromFile» из сценария сценария приложений на листе возникает ошибка времени выполнения.

«changeDialog», упоминаемый ниже, является простым файлом в проекте Apps Script с заполнителем разметке:

<h2> fieldName </h2> 

Следующий код генерирует исключение «Недопустимый аргумент пользовательским интерфейсом» при вызове:

function showSidebar(){ 

    var html = HtmlService.createTemplateFromFile('changeDialog'); 
    html.evaluate(); 

    SpreadsheetApp.getUi() 
     .showSidebar(html); 
} 

UPDATE: Обновлен с фактическим кодом, который не работал. И ... ответил Могсдад. Все документы шаблона показывают вариант веб-страницы, а метод «doGet()» возвращает результаты «.evaluate()». Я думал, что объект html несет внутреннее состояние метода «оценить». Я, оказывается, что вы либо набор, который приведет к другому вар, или просто сделать вызов в строке в методе .showSideBar (...):

SpreadsheetApp.getUi() 
    .showSidebar(html.evaluate()); 

или ...

var evaluatedHtml = html.evaluate(); 
    SpreadsheetApp.getUi() 
     .showSidebar(evaluatedHtml); 

ответ

4

You необходимо создать evaluate() шаблон для создания объекта HtmlOutput.

function showSidebar(){ 

    var html = HtmlService.createTemplateFromFile('changeDialog'); 

    var a = "test"; 

    SpreadsheetApp.getUi() 
     .showSidebar(html.evaluate()); 
         ////////// 
} 

Поскольку файл changeDialog.html не содержит тегов шаблона, вы могли бы вместо того, чтобы создать файл HTML из него непосредственно:

function showSidebar(){ 

    var html = HtmlService.createOutputFromFile('changeDialog'); 
           ////// 

    var a = "test"; 

    SpreadsheetApp.getUi() 
     .showSidebar(html); 
} 
+0

Я забыл включить это в примечание выше, и он все еще порождал ошибки ... пока я не посмотрел образцы для варианта веб-страницы. Я просто вызывал «.evaluate», а затем передавал «html» в метод. Я не понял, что .showSideBar и showModalDialog хотят получить результат .evaluate. Спасибо, что поймал это. –

+0

FYI - Я просто отлаживал простейший HTML. У меня обязательно будут встроенные переменные, код, обратные вызовы и т. Д. –

0

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

Смежные вопросы