从 Google 表格按钮调用脚本函数(写入 Google 驱动器中的 .gs 文件)

Posted

技术标签:

【中文标题】从 Google 表格按钮调用脚本函数(写入 Google 驱动器中的 .gs 文件)【英文标题】:Call script function (written in .gs file in Google drive) from Google sheets button 【发布时间】:2020-11-18 14:08:19 【问题描述】:

我希望不同的用户能够编辑我的 Google 表格和脚本。

根据here 的回答,我在Google drive 中制作了一个脚本文件,并用它成功地操作了Google sheet 中的数据。

但是,我希望用户能够通过单击按钮从 Google 工作表中调用脚本函数。当我将脚本函数名称分配给工作表中的按钮时,出现“找不到脚本函数 testFunction”错误。

更新

我已将以下脚本附加到我的按钮:

function runTest()
  TestScript.testFunction()

TestScript 是独立脚本项目的名称。但是,当我按下按钮时,出现“参考错误:未定义 TestScript”。

【问题讨论】:

如果你想从另一个项目运行脚本,你必须使用谷歌应用脚​​本高级 API 将脚本用作库包含在您的方向吗? developers.google.com/apps-script/guides/libraries 【参考方案1】:

要在电子表格脚本中使用未绑定到电子表格的脚本中的函数,您应该使用libraries。

为此,请按以下步骤操作:

    在您将运行该函数的脚本(即电子表格的外部脚本,因为它不受限制)中,转到菜单栏并选择 文件 -> 管理版本 并创建一个具有您想要的标题的新版本。

    然后,在同一脚本中转到 File -> Project Properties 并复制 Script ID

    转到电子表格的有界脚本(这是具有将由您的按钮触发的功能的脚本),然后在菜单栏中转到 Resources -> Libraries,插入 @987654323 @,选择最新版本并为库命名以供本地使用(例如,如果它设置为Test,您将使用Test.myFunction();调用其函数。

    记住将有界脚本函数分配给工作表中的按钮。

【讨论】:

因此,当我从按钮运行该功能时,我必须接受通常的权限,并且没有收到任何错误。您的单独脚本中要求这些权限的代码是什么?在我的环境中,它可以很好地使用按钮,我不必使用自定义菜单。您如何创建此按钮并将其链接到您的脚本? 您是如何将按钮链接到电子表格的脚本的?在我的情况下,我做了以下操作:在菜单栏中,我选择了 Insert -> Drawing,矩形形状,一旦添加,我通过选择 Assign script 链接它然后添加我的有界脚本函数名称(在我的情况下为myFunction)。我还用SpreadsheetApp.openById() 进行了测试,它对我来说也很好。 您是否还在您的任何脚本中明确设置了任何范围?您是否使用任何触发器? 感谢您的帮助。我解决了这个问题。我的用户不是电子表格文件的所有者。我制作了一个新的电子表格文件,代码运行良好。 如果您知道一种从用户是编辑者而非所有者的工作表中调用独立脚本的方法,请分享。

以上是关于从 Google 表格按钮调用脚本函数(写入 Google 驱动器中的 .gs 文件)的主要内容,如果未能解决你的问题,请参考以下文章

Folders.hasNext()从Google表格中返回false,但直接从Google Script调用时为true

从移动应用程序执行 Google Apps 脚本功能

写入表格的 Google 脚本

Google 表格的静态 TIMESTAMP

如何调试Google Apps脚本(又名Logger.log登录到哪里?)

Apps 脚本 - 在 Google 表格上复制“将图像放入选定的单元格”