【问题标题】:Function given with google.script.run not getting invokedgoogle.script.run 给出的函数没有被调用
【发布时间】:2020-06-11 02:37:59
【问题描述】:

我遵循了代码 sn-ps 和 https://developers.google.com/apps-script/guides/html/communication#index.html 给出的指示

并在我的脚本项目中添加了以下代码:

代码.gs

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


function doSomething() {
  Logger.log('I was called!');
}

索引.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>

google.script.run.doSomething();

</script>

  </head>

</html>

但是我的函数doSomething 没有被调用。这是一个全新的 google 脚本项目,我已经开始并将其发布为网络应用程序。

我在this 线程和this 线程中看到了类似的问题。我已经尝试了那里提到的措施,但仍然面临这个问题。另外,我看到那里没有接受的答案,所以再次发布这个问题。我不知道如何让这些问题重获新生。

谢谢, 穆克什

【问题讨论】:

  • 我会这样做:&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;base target="_top"&gt;&lt;script&gt;window.onload=function(){google.script.run.doSomething();}&lt;/script&gt;&lt;/head&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;
  • 您是否使用浏览器发出了get?你授权脚本了吗?
  • 我认为在您的脚本中,当 Web 应用程序反映最新脚本时,doSomething() 有效。您可以在“查看”->“日志”->打开脚本编辑器的“Apps Script Dashboard”链接看到google.script.run.doSomething()doSomething()的日志。在这种情况下,登录脚本编辑器会显示“在此编辑器会话中没有运行任何功能。”。但是您可以分别在“Apps Script Dashboard”中的“doSomething”和“Web App”的功能和类型中看到它。那你能再确认一下吗?
  • 正如@Cooper 所建议的,我将使用onLoad 属性来确保正确执行。但是您的代码应该按原样执行。查看您项目的日志并查看是否已记录事件。
  • @Cooper,您是否建议 Google 网站上提供的代码不完整,我应该添加 window.onload?它是强制性的吗?是的,我确实遇到了浏览器问题。我使用“发布-> 部署为网络应用程序”,然后点击给出的网址。

标签: google-apps-script


【解决方案1】:

您可以在对话框中更轻松地对其进行测试。

GS:

function doSomething() {
  SpreadsheetApp.getActive().toast('I was called!');
  return 'I called';
}

function openDialog() {
  SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutputFromFile('ah3'), "Testing")
}

HTML:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
    </script>
  </head>
  <body>

<script>
window.onload=function(){
  google.script.run
  .withSuccessHandler(function(msg){
     window.alert(msg);//display returned message
     google.script.host.close();//close the dialog
  })
  .doSomething();//The call to the server
  }
  </script>
 </body>
</html>

【讨论】:

  • 感谢库珀。请问我的代码本身可能出了什么问题?我不想涉及使用电子表格的另一个复杂性。我不打算在这个应用程序中使用电子表格(至少现在是这样)并且不想到达那里。此外,您建议将其用于 onload。但为什么?在我不希望它加载的其他情况下,我将如何使用它?
  • 一般来说,在文档完全加载到浏览器之前,我不喜欢运行任何脚本。设置监听器也是如此。
  • 我不认为这是我面临的问题。我有一些其他 script.google.run 调用在页面加载后被调用,但调用实际上并没有调用该函数。我试图调试它。在调试时我简化了它,但它仍然失败。
  • 实际上你的代码在页面加载之前就已经运行了,因为它已经用完了,但是我测试了它实际上可以工作,也许你只是不知道如何使用记录器我不知道知道你知道吗,V-8 需要很长时间,所以最好实际去查看执行并查看堆栈日志记录
  • 是的,我就是这么做的,看起来就是这样!日志确实显示在堆栈驱动程序日志中。我不知道为什么它们没有显示在“查看日志”中。这太令人困惑了。为什么存在两个?为什么他们不能清楚地告诉使用哪一个?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
  • 2017-04-18
  • 2011-12-30
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多