Google apps script HTMLService赢得';t显示返回值

Google apps script HTMLService赢得';t显示返回值,google-apps-script,Google Apps Script,我创建了一个侧边栏,为搜索我的谷歌工作表提供了一个基本的用户界面。我完全按照这一点来做,以确保第一步是有效的,但事实并非如此!我甚至去掉了userObject部分来简化它(老实说,因为我不知道那部分做什么) 如果有必要,HTML将通过onOpen在侧栏中运行,如下所示: function showGradingSidebar() { var html = HtmlService.createHtmlOutputFromFile('testSidebar') .setSandbox

我创建了一个侧边栏,为搜索我的谷歌工作表提供了一个基本的用户界面。我完全按照这一点来做,以确保第一步是有效的,但事实并非如此!我甚至去掉了userObject部分来简化它(老实说,因为我不知道那部分做什么)

如果有必要,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>
[html、head等]

输出如下:
爸爸说:

函数更新按钮(结果){ var div=document.getElementById('output') div.innerHTML='It finally works!'+结果; }

我不知道它有多大帮助,但我确实在阅读后将脚本标记向下移动到了正文的底部,fwiw。

在Chrome中,如果右键单击控制台中的侧栏区域>>检查>>,在单击其中一个按钮后,应该会显示一条消息,表明没有有效的返回类型

.createTextOutput(content)
返回一个TextOutput类型(与纯文本类型不同)

仅当您在web应用程序URL上部署了一个应用程序,并且一些外部服务调用了该URL时,才会使用它。它只会变得太快

您是否尝试过返回“Jackpot”而不是

.withUserObject(this)
-
this
引用按钮元素,整个方法将其传递给
成功处理程序()。所以你可以考虑保留它。否则,您必须以另一种方式从successHandler中引用按钮:

function updateButton(email) {
  document.getElementById('myButton').value = 'Clicked by ' + email;
}
…这要求您在按钮中添加ID属性

您可以随时执行以下操作:

function updateButton(email, button) {
  console.log('Success hit');
  button.value = 'Clicked by ' + email;
}

…以检查是否在Chrome开发控制台中也调用了successHandler。

感谢您的深入了解。我想当时我误用了内容服务。在我发现安全限制之前,我先尝试了简单的
返回“Jackpot”
,所以我不知道什么是“脏”返回。在执行Bryan的输入一个小时后,我终于让它工作了。我为后代更新了我原来的帖子。
function updateButton(email) {
  document.getElementById('myButton').value = 'Clicked by ' + email;
}
function updateButton(email, button) {
  console.log('Success hit');
  button.value = 'Clicked by ' + email;
}