如何在电子表格中调用我的独立脚本?

Jor*_*ani 5 google-apps-script google-spreadsheet-api

我已经从Google云端硬盘创建了一个独立的应用脚本,但是当我尝试从Google电子表格访问它时,我看不到访问该脚本的方法(即使我创建脚本时,我将其创建为电子表格脚本).

在电子表格中,"工具 - >脚本管理器..."菜单项不显示我的脚本,"工具 - >脚本编辑器......"也没有显示.后者有一个"最近项目"的部分,但它没有列出我新创建的脚本,也没有列出其相关项目.

如果我从电子表格内部创建一个新脚本(即.Tools-> Script editor ...)并从独立脚本中剪切并粘贴代码,它就可以正常工作.但是,这只能在单个电子表格中使用 - 要从另一个电子表格中使用它,我必须再次剪切和粘贴/再次通过身份验证.

有没有办法在不将图片发布到图库的情况下执行此操作,我认为将其公开(我没有问题将其公开,但似乎必须有更好的方法)?脚本在这里 - 它是世界可读的链接.它为google电子表格添加了一个菜单,允许您在BigQuery中运行查询并将结果转储到电子表格中.

Ser*_*sas 5

您描述的行为正是它的工作方式...您编写的脚本只有在绑定到电子表格时才能工作.

您在独立脚本中编写它的事实使它确实是一个独立的应用程序,但它只能在脚本编辑器中执行,并且在此上下文中,onOpen您编写的函数没有意义(它在打开文档时运行) /电子表格,而不是脚本).

目前,脚本只能通过复制/粘贴代码绑定到电子表格,至少是您要使用的脚本(使用菜单和直接函数调用以及activeSheet调用),也许有一天Google会扩展库的概念,使您的脚本功能可以直接从不同的文档中获取(另请参阅有关库文档).

实际上有两种类型的独立应用程序脚本,您尝试过的仅在编辑器中运行的应用程序脚本以及在浏览器窗口中自行部署和运行的Web应用程序.后者总是围绕一个doGet代表应用程序入口点的函数构建.您应该阅读有关该主题文档以获取所有详细信息.

总结一下:如果你想使用getActiveSpreadsheet()和类似的方法访问你的电子表格,那么你必须在脚本编辑器中编写(或粘贴)脚本到电子表格.

如果您想要一个独立的脚本,您也可以与电子表格(以及其他文档)进行交互,但您必须通过他们的ID访问它们,电子表格只能从另一个浏览器窗口查看,而不需要它们之间的链接,并且不是"活动电子表格"也不是"活动表"......

Webapp当然也可以通过用户界面的优势来实现,您可以根据自己的需求进行调整,但这与您的问题范围相差甚远.

希望我(有点)更清楚,至少我试图让它变得简单;-)

  • 感谢您提供丰富的答案.那么,从"Drive-> Create-> Script"看起来很奇怪,它为您提供了为电子表格创建脚本的选项,但是没有办法在电子表格中使用该脚本. (3认同)

Fel*_*ffa 3

我按照此处的说明与乔丹一起解决了这个问题:

https://developers.google.com/apps-script/guide_libraries

  • 首先,他必须与我分享他的独立脚本,因此我可以读取它(可能将脚本设置为公共读取也可以)。
  • 然后他告诉我他的项目密钥。
  • 我拿走了他的项目密钥并将其插入“管理库”菜单中的“查找库”中。
  • 为了实现这一点,乔丹必须导出他的库的“一个版本”——这样第三方就可以依赖稳定的代码并按照自己的节奏进行升级。
  • 由于 Jordan 的脚本在 onOpen() 上自动运行,因此我的代码必须定义一个函数 onOpen() 来调用他的脚本 onOpen()。为此,图书馆管理员为我提供了导入图书馆的标识符。

导入库并且库管理器为您提供库的标识符后,示例代码:

   function onOpen() {
     GivenLibraryIdentifier.onOpen();
   }
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,Fh。这更接近我想要的,尽管仍然有很多不直观的步骤,但至少它让我可以使用我曾经编写过的代码,而无需将其剪切并粘贴到各处。 (3认同)