2013-08-28 2 views
0

В Google Apps, скриптов и HTML службыHTML Service - Выпадающий список опций от GSheet

Code.gs 
function doGet() { 
    return HtmlService.createTemplateFromFile('HTMLUI').evaluate() 
    .setSandboxMode(HtmlService.SandboxMode.NATIVE); 
} 

Вот HTML

HTMLUI.html 

<script type="text/javascript"></script> 
<script> 
<? 
    var sheet = SpreadsheetApp.openById("0Avt7ejriwlxudGZfV2xJUGJZLXktQ2RhQU1uRUgtaXc").getSheetByName("MRF Tab"); 
    var lastRow = sheet.getLastRow(); 
    var myRange = sheet.getRange("C3:C"+lastRow); 
    var data = myRange.getValues(); 
?> 
</script> 
<select> 
<? for (var i = 0; i < sourcedata.length; ++i) { ?> 
<option><?!= sourcedata[i] ?></option> 
<? } ?> 
</select> 

Я имел этот код в одном из моих проектов (и гораздо больше кода), который в основном фиксирует информацию из листа и добавляет ее в параметры (выпадающий список) в select, но при попытке использовать этот же код в новом проекте это не работает, любые идеи, что мне не хватает.

В настоящее время в результате отображается это выпадающий список с <?!=sourcedata[i]?>

Как я могу исправить это. Любая помощь пожалуйста.

EDIT: ---

Пожалуйста, посмотри @ комментарий нет 3 для ссылки на таблицу и некоторые обходной путь с ним ...

+0

«В настоящее время результат отображается в раскрывающемся списке с ...» что? Ожидание убивает меня! Является ли lastRow> 3? – Mogsdad

+0

Спасибо Mogsdad ... Я думаю, из-за стрелок вопросительный знак, он не был виден, я изменил код, чтобы сделать их видимыми сейчас ... Вставка еще одной информации, пожалуйста, подождите .. – Vasim

+0

Хорошо ... здесь [ссылка ] (https://docs.google.com/spreadsheet/ccc?key=0Ak8UXE3yTEiQdFJRMS1yTkpHLTE1NmZsaXdhVnhIQUE#gid=0) в таблицу. Есть 2 функции doGet, если я публикую с использованием первого комментария, который он работает, однако он не работает с второй doGet ... У меня есть много файлов, которые я разделил и подключил, используя include..any help here please. – Vasim

ответ

1

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

Вы используете шаблонный HTML в test.html, чтобы включать шаблонный HTML из HTMLUI.html, а функция include() пытается лечить содержание HTMLUI.html как обычные (не шаблонный) источника HTML.

В одном случае это будет использовать версию include() специально для шаблонов html. Поместите это в файле GS:

function includeTemplate(filename) { 
    return HtmlService.createTemplateFromFile(filename).evaluate() 
     .setSandboxMode(HtmlService.SandboxMode.NATIVE) 
     .getContent(); 
} 

Ваш test.html становится:

<?!= includeTemplate('HTMLUI'); ?> 

Это будет сделать то, что вы пытаетесь в вашем примере. Однако для этого вы теряете некоторые возможности шаблона html, так как у вас не будет возможности перетаскивать переменные в шаблон.

+0

Спасибо Mogsdad (Ustad) .... вы великолепны ... «У вас не будет возможности подталкивать переменные к шаблону» - пожалуйста, вы можете объяснить, что это значит ... Извините, все еще учась .... – Vasim

+0

https://developers.google.com/apps-script/guides/html-service-templates#pushing_variables_to_templates – Mogsdad