2015-02-09 58 views
1

我試圖在作爲Web應用程序發佈的Google Apps Spreadsheet腳本中的主HTML文件中分離出我的javascript和樣式表。我已經看到this answer這個問題,但我無法得到這個方法爲我工作。Google Apps腳本Web應用程序:無法分離出css和js代碼

當我在主HTML文件中有我的樣式表和JavaScript時,它工作正常。當我嘗試按照答案建議完全分開它們時,樣式表和JavaScript代碼不會被處理,而是調用「getContent()」的行會顯示在我的瀏覽器中。它看起來像getContent()根本沒有被執行。

我試過將我的代碼從Spreadsheet移到獨立的Web應用程序,但仍然有同樣的問題。任何想法爲什麼它不適合我?謝謝!

從我Code.gs了一下:

function doGet() { 
     var output = HtmlService.createHtmlOutputFromFile('index'); 
     output.setSandboxMode(HtmlService.SandboxMode.IFRAME); 
     output.setTitle('Dashboard Tool'); 
     return output; 
    } 
function getContent(filename) { 
    Logger.log('getContent()'); 
    return HtmlService.createTemplateFromFile(filename).getRawContent(); 
} 

的index.html:

<?!= getContent("stylesheet") ?> 
    <div class='header'>Dashboard</div> 
    <div id=content> 
Content Here 
</div> 
<?!= getContent("javascript") ?> 

'stylesheet.html' 代碼由風格標籤包圍, 'javascript.html' 代碼被腳本標記包圍。

回答

2

您在createHtmlOutputFromFile()中忘記了evaluate(),您也應該使用createTemplateFromFile。

var output = HtmlService.createTemplateFromFile('index').evaluate(); 

由於@布賴恩-P指出,你所需要的,而不是「輸出」模板',在評估對scriplets <?!= ?>發生。

+0

謝謝!看起來我不得不對模板化的HTML做一些評論,但是這會讓它工作。 – Carrie 2015-02-10 01:17:32

+0

爲什麼要用'createTemplate()'來代替? – 2015-04-15 18:04:43

+0

@BryanP它被認爲是createTemplateFromFile,最終只寫了前兩個單詞,但在下面的代碼中寫入了正確的內容。編輯。 – Kriggs 2015-04-15 18:07:20

1

在這行代碼:

return HtmlService.createTemplateFromFile(filename).getRawContent(); 

createTemplateFromFile()正在使用。該方法用於創建原始模板,但getContent()函數不適用於此目的。使用方法:

return HtmlService.createHtmlOutputFromFile(filename).getContent(); 
+1

在第一個答案中建議更改後,似乎我在此答案中引用的原始代碼正常工作。雖然我需要刷新模板,但您的答案確實有意義,所以我也做了這一改變。 – Carrie 2015-02-10 01:20:37

相關問題