2013-09-29 34 views
0

我有一個帶有嵌入式應用程序腳本小工具的Google協作平臺頁面。在頁面上,我想單擊按鈕時顯示ScriptDb數據。如何將ScriptDb中的值傳遞給Google協作平臺小工具

我的問題是:如何將ScriptDb結果傳遞到嵌入到我的小工具中的JavaScript?

這是我的源:

[Sample-Code.gs]

function doGet() { 
    // return template page 
    return HtmlService 
     .createTemplateFromFile('Sample-HTML') 
     .evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE); 
} 

function include(filename) { 
    return HtmlService.createHtmlOutputFromFile(filename) 
     .getContent(); 
} 

// assume db contains 10 'records' 
function getData(query) { 
    var db = ScriptDb.getMyDb(); 
    var data = db.query(query); 
    Logger.log(data.getSize()); // returns '10.0' 
    return data; // makes showData think this is null 
} 

[樣品中將Html.HTML]

<?!= include('Sample-JavaScript'); ?> 

<input type="button" value="show data" 
    onclick="google.script.run 
    .withSuccessHandler(showData) 
    .getData({})" /> 

[樣品JavaScript.html]

<script> 
function showData(db_query_result) { 
alert(db_query_result); // returns null. 
} 
</script> 
+0

ScriptDb中被廢棄 –

回答

1

返回的值是the documentation中定義的一個對象,它不能直接在UI中使用,您應該以可以在頁面中顯示的格式返回值:一個字符串或一串字符串。

我沒有測試,但是這應該工作:

function getData(query) { 
    var db = ScriptDb.getMyDb(); 
    var result = db.query(query); 
    Logger.log(result.getSize()); // returns '10.0' 
    var results = db.query({type: 'person'}); 
    var data = []; 
    while (results.hasNext()) { 
    data.push(results.next()); 
    } 
    return data; // data is an array of results 
} 
+0

你的回答也許應該被接受 – nupac

+0

謝謝,我想這個傢伙不會出現了。9月'13; - ) –

+0

一個非常遲來的謝謝,塞爾:)沒有完全掌握了stackoverflow禮儀。現在,谷歌在ScriptDb上拉上了這個插頭,這一切都是在這座橋下。 –

相關問題