2016-09-13 49 views
2

我試圖使用外部CSS樣式表。然而,我得到的是'*包括樣式表*'呈現在我的HTML邊欄。我在我的code.gs文件中創建了include函數。爲什麼這不起作用?Google Apps腳本 - 包含外部文件無效的模板語句

的index.html

<!DOCTYPE html> 
<html> 
<head> 
<base target="_top"> 
<?!= include('stylesheet'); ?> 
</head> 
<body> 
    <script 
    src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> 
    </script> 
</body> 
</html> 

Code.gs

function onOpen() { 
SpreadsheetApp.getUi() 
.createMenu('Form') 
.addItem('Open', 'openSidebar') 
.addToUi(); 
} 
function include(filename) { 
return HtmlService.createHtmlOutputFromFile(filename) 
    .getContent(); 
} 
function openSidebar(){ 
var htmlOutput = HtmlService.createHtmlOutputFromFile('Index'); 
htmlOutput.setTitle('Customer Inquiry Form'); 
SpreadsheetApp.getUi().showSidebar(htmlOutput); 
} 

stylesheet.html

<style> 
body{ 
    background-color:'gray'; 
} 
</style> 

回答

2

在這個函數:

function openSidebar(){ 
var htmlOutput = HtmlService.createHtmlOutputFromFile('Index'); 
htmlOutput.setTitle('Customer Inquiry Form'); 
SpreadsheetApp.getUi().showSidebar(htmlOutput); 
} 

您使用的是createHtmlOutputFromFile,它會爲你的的Index.html的內容,但它不會執行scriptlets內。

爲了執行,你需要創建一個HtmlTemplate,然後調用evaluate()方法的小腳本,你的函數應該是這樣的:

function openSidebar(){ 
    var template = HtmlService.createTemplateFromFile('Index') 
     .evaluate() 
     .setTitle('Customer Inquiry Form') 
SpreadsheetApp.getUi().showSidebar(template); 
} 

而且刪除值gray'stylesheet.html

<style> 
html{ 
    background-color: gray; 
} 
</style> 
+0

沒有時間進行的修正,但是我讀下模板文件的參考,我看到你說的是真的。起初我不明白,並認爲你誤解了我,因爲你重新構造了我的索引文件而不是樣式表。但是你是絕對正確的,我需要使用一個模板才能夠使用Scriptlet。再次感謝2,2 :)。 –

+1

好的。我正式實施它,它的工作原理。謝謝。 –