【问题标题】:Cannot call a server-side function located inside a library from client-side code无法从客户端代码调用位于库中的服务器端函数
【发布时间】:2020-01-23 05:49:15
【问题描述】:

我尝试了使用此处提供的示例代码 https://developers.google.com/apps-script/guides/html/reference/run 从我的 html 调用 Google Apps Script 服务器端函数的最简单方法。它就像一个魅力。

但是,当我尝试在 中包含所有服务器代码的实际项目中执行相同的操作时,它不起作用。我不断收到错误

未捕获的类型错误:google.script.run.doSomething 不是函数

这是我为重新创建问题而创建的示例项目

The Gdoc 在这里查找“测试菜单”并单击“打开侧边栏”以调用该功能。访问绑定脚本查看库的代码和使用情况。

Library code

对此的任何帮助将不胜感激。

【问题讨论】:

  • 没有你的帮助真的很难帮助你,你能分享一下不工作的项目吗?你能分享相关的代码吗? (例如,对我来说,不清楚您所说的“在我的项目中/库中的所有代码”是指本地项目还是什么?)
  • @CrissCrossCrass 编辑了包含所有详细信息的帖子。感谢您的帮助!
  • 我假设你意识到google.script.run.doSomething 应该是google.script.run.doSomething()
  • 是的,我愿意。如果你打开我的项目,你会看到我是这样编码的。
  • 使用google.script.run API 时,仅公开服务器端脚本的公共方法。如果你想引用库方法,那么我相信你需要一个公共包装器:function useLib() { return myLibName.doSomething(); }

标签: javascript google-apps-script web-applications


【解决方案1】:

例子:

html:

<script>
function doSomething() {
  google.script.run
  .withSuccessHandler(function(msg){
    window.alert(msg);//Thank's I got it.
  })
  .doSomething();
} 
</script>

<body>
  <input type="button" value="Do Something" onClick="doSomething();" />
</body>

gs:

function doSomething() {
  return 'Thanks I got it';
}

【讨论】:

  • 如果我将这些内容直接复制粘贴到绑定到文档的脚本中,那么一切正常。我的问题是,当我将此代码放入库中,然后从绑定到文档的脚本中调用它时,它不会。我明白了,这个问题与我使用图书馆有关,但我不知道它是什么以及如何解决它......当我说图书馆时,我的意思是developers.google.com/apps-script/guides/libraries
  • 你是在函数前加库名吗?
  • 你能准确说出你说的是哪个函数吗?从绑定脚本中,我调用的所有库函数都以库名称为前缀。
  • 我从未尝试使用 google.script.run 访问库代码。
【解决方案2】:

您正在尝试从库中调用 DocumentApp.getUi()

如你所见here

脚本只能与当前实例的 UI 交互 打开文档,并且仅当脚本绑定到文档时。

您的库未绑定到您的文档。这就是您的代码无法运行的原因。

您只能将代码的那些部分移动到不使用 getUi() 或任何 Not-shared resources(例如触发器)的库中。 documentation 指定哪些资源是共享的,哪些不是。

【讨论】:

  • 我不同意。我在其他项目的很多地方都使用过 DocumentApp.getUi() 并且效果很好
  • 你的意思是你已经在一个库中实现了 DocumentApp.getUi() 并且可以从你合并这个库的脚本中访问它?我在发布答案之前尝试这样做,发现这是不可能的 - 至少对于创建侧边栏来说是这样。
猜你喜欢
  • 1970-01-01
  • 2017-06-27
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多