2013-02-18 66 views
0

我已經在Google Apps腳本上創建了一個項目,並在其上有教程腳本,但它不起作用。基本上我希望HTML可以在Google Spreadsheet上打印來自數據範圍的數據。將電子表格詳細信息打印到HTML

我.GS文件的代碼是:

function doGet() { 
    return HtmlService.createHtmlOutputFromFile('Main Page'); 
} 

function getData() { 
    return SpreadsheetApp.openById('0AtD2IyQN1tyGdHBiLWExb3NoSHZ2RlAzNTBrS1dQLXc').getRangeByName('dataRange').getValues(); 
} 

和我的HTML代碼爲:

<html> 
<? var data = getData(); ?> 
</html> 

我是相當新的谷歌Apps腳本的應用程序,並搜索這代碼多次。我創建的應用似乎根本沒有工作。任何人都可以爲我提供解決方案或解釋爲什麼這不起作用?

+1

你能提供更多關於它如何失敗的信息嗎?你看到一個錯誤? – 2013-03-01 23:05:58

回答

1

恐怕幾件事情是錯在你的代碼:

  1. 您應該使用return HtmlService.createTemplateFromFile('Main Page').evaluate();代碼爲
  2. 通過的getData返回的值是一個數組以得到一個HTML頁面的結果,你應該以某種方式將其轉換爲HTML可以理解的東西......或者在html文件中有一些代碼來正確處理數組數據。

例如,一個字符串工作

function getData() { 
    var data = SpreadsheetApp.openById('0AtD2IyQN1tyGdHBiLWExb3NoSHZ2RlAzNTBrS1dQLXc').getRange('testRange').getValues(); 
    return data.toString().replace(/,/g,' | '); 
} 

3:在您的HTML語法錯誤,嘗試這樣的:

<html> 
<?= getData(); ?> 
</html> 

或類似這樣的,在每個單元新行如果數據是簡單的數組:

(在代碼中使用return data.toString().split(',');

<? var data = getData(); 
    for (var i = 0; i < data.length; ++i) { ?> 
    <b><?= data[i] ?></b><BR> 
<? } ?> 

或者表中的如果你把你的數據作爲2維陣列,這裏是一個完整的例子:

test exec here

代碼:

function doGet() { 
    return HtmlService.createTemplateFromFile('Main Page').evaluate(); 
} 

function getData() { 
    var data = SpreadsheetApp.openById('0AtD2IyQN1tyGdHBiLWExb3NoSHZ2RlAzNTBrS1dQLXc').getRange('dataRange').getValues(); 
    return data; 
} 

HTML:

<table border="5" bordercolor="FFCC00" style="background-color:#dddddd" width="400" cellpadding="5" cellspacing="3">  
<? var data = getData(); 
    for (var i = 0; i < data.length; ++i) { ?> 
    <tr> 
<? for (n = 0; n< data[0].length; ++n) { ?> 
    <td><?= data[i][n] ?></td> 
<? } }?> 
</tr> 
</table> 

我認爲這就是全部......我不知道你的範圍內有什麼顯示,所以我不能進一步提供更多的提示......