我創建了一個側邊欄,以具有用於搜索我的Google工作表的基本UI。我正在關注this tutorial,以確保第一步工作正常,但不是這樣!我甚至拿出userObject部分來簡化它(老實說,因爲我不知道那部分是什麼)。HTMLService將不會顯示返回值
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
function updateButton(email, button) {
button.value = 'Clicked by ' + email;
}
</script>
</head>
<body>
<input type="button" value="Not Clicked"
onclick="google.script.run
.withSuccessHandler(updateButton)
//.withUserObject(this)
.testMe()" />
<input type="button" value="Not Clicked"
onclick="google.script.run
.withSuccessHandler(updateButton)
//.withUserObject(this)
.testMe()" />
</body>
</html>
它調用此函數:
function testMe() {
Logger.log("Test log.");
return ContentService.createTextOutput("Jackpot!");
}
如果它的事項,在HTML通過的OnOpen運行在一個側邊欄,如下所示:
function showGradingSidebar() {
var html = HtmlService.createHtmlOutputFromFile('testSidebar')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('Testing Module')
.setWidth(300);
SpreadsheetApp.getUi()
.showSidebar(html);
}
當我按一下按鈕,它什麼都不做(我可以看到)。通過改變各個方面,我可以將它傳遞給Logger.log()一個簡單的消息,但即使我更改了HTML端,也無法可靠地工作。
我在閱讀有關安全限制的內容,這些限制需要清理函數返回的內容,但HtmlService.createHtmlOutput()和ContentService.createTextOutput()也都不成功。請指教。
更新:感謝@Bryan P,我得到它的工作。該TESTME()僅僅是:
return "Jackpot";
...和HTML頁面看起來像這樣:
[html, head, etc.]<body>
<input type="button" value="Ready"
onclick="google.script.run
.withSuccessHandler(updateButton)
.withUserObject(this)
.testMe()" --->
<br><div id="output">Output goes here: </div>
<br><div id="papa">Papa goes here: </div>
<br><p></p>
<script>
function updateButton(result) {
var div = document.getElementById('output')
div.innerHTML = 'It finally works!' + result;
}
</script>
</body>
</html>
我不知道有多少幫助,但我也向下移動腳本標籤在閱讀this SO post之後,到了身體的底部。
感謝您的洞察力。我想我是在濫用內容服務。在我發現安全限制之前,我確實嘗試了簡單的「返回」累積獎金,因此我不知道什麼是「骯髒」的回報。 經過一個小時實施Bryan的輸入,我終於找到了工作。我更新了我原來的後代。 – Mithrandir