我的Google Apps脚本如何由其他人共享?

时间:2017-06-21 09:55:25

标签: google-apps-script google-sheets google-drive-api google-sheets-api

我有一个适合我的Google Apps脚本。与表共享的其他人试图使用它获得消息:

  

您无权执行该操作。请问主人   此项目授予您访问权限。

该脚本用于使用新的数据行更新现有工作表。它是使用添加到UI的菜单项触发的,并执行以下操作:

  • 在GDrive文件夹中查找.xlsx文件(此文件由Web服务导出,并由我们手动放入GDrive文件夹,我们无法控制文件内容或其格式)
  • 使用UrlFetchApp将文件从.xlsx转换为.gsheet(uploadType = media& convert = true)
  • 使用UrlFetchApp更改生成的.gsheet的文件名和文件夹位置。文件夹位置现在与.xlsx文件的位置匹配(当使用UrlFetchApp转换文件时,生成的文件似乎放在GDrive的根目录中)
  • 使用DriveApp获取.gsheet,然后打开它以供脚本
  • 访问
  • 使用列标题将.gsheet中的所有数据存储到2d数组中,作为行中每个元素的键
  • 将目标表中现有数据的所有ID值(唯一)存储到1d数组
  • 比较两个数组,并从2d数组中删除包含与1d数组中的ID匹配的ID的所有行,只留下2d数组中的新数据
  • 循环遍历2d数组的每一行,然后遍历目标工作表的每一列,将数据从第二个数组行添加到目标工作表中数据底部的新行,使用列标题的值作为每个元素的关键

我知道代码没有问题,因为它适用于我,所以它一定是权限问题,但我无法弄清楚如何。工作表与它们共享,存储文件的GDrive文件夹与它们共享。当我第一次自己运行脚本时,我必须授予脚本访问GDrive文件夹的权限,这显然已经完成了。

我是我们小组的开发人员,而不是数据的用户,但是我需要运行脚本来为用户每次需要时更新数据,而不是只是自己做,这是......很讨厌。

任何帮助,试图找出问题所在的位置都非常感激。

编辑:再次阅读本文时,我发现当文件转换时,首先将其保存到GDrive根目录,这就是我必须更改文件夹的原因。作为根,它不与该文件的用户共享。这可能是原因吗?如果是这样,我怎么能解决这个问题呢?我可以在转换时指定应将结果文件保存到哪个文件夹吗?

4 个答案:

答案 0 :(得分:2)

根据我的经验,我创建了一个电子表格,每次打开电子表格时都会为用户检索G Suite许可信息。我所做的是我用超级管理员创建了脚本,但是当共享电子表格时,其他用户遇到了同样的问题,直到我从“应用程序脚本”菜单转到“发布”>“作为Webb应用程序部署”,我留下了如下图所示的选项< / p>

enter image description here

对我有用,我希望对您有用。更新之后,每次打开电子表格时,所有对电子表格具有“编辑”权限的用户都可以代表超级管理员检索信息。只需确保以sum(x=>x*x)(1, 4)=week2.Currying$$$Lambda$12/1468177767@3d24753a sum(x=>x*x*x)(1, 4)=week2.Currying$$$Lambda$12/1468177767@67b64c45 sum2(x=>x*x)(1, 4)=week2.Currying$$$Lambda$15/1626877848@2f7a2457 sum2(x=>x*x*x)(1, 4)=week2.Currying$$$Lambda$15/1626877848@6108b2d7 Process finished with exit code 0 的身份执行该应用程序,而不要以使用脚本或电子表格的you身份执行该应用程序即可。

通常,其他用户无法运行需要管理员权限的脚本,但这可以解决我的问题。请让我知道这是否对您有用!

问候。

答案 1 :(得分:0)

要解决此问题,您需要将脚本部署为Web应用程序(此想法来自@MarioR答案,但设置不同):

  • 使用所有者帐户,打开工作表,然后打开脚本编辑器
  • 点击Publish,然后点击Deploy as web app
  • 对于Execute the app as,选择User accessing the web app,对于Who has access to the app,选择Anyone

用户首次尝试使用该脚本时,将不得不允许该脚本(如果他们获得This app isn't verified,则应在底部单击Advanced,然后单击{{1} }。之后,他们可能需要刷新工作表才能运行脚本。

如果所有者将表单共享给新用户,则在脚本作为Web应用程序部署后,新用户可能需要等待15分钟(或大约15分钟),然后才能被授权对脚本进行授权(同时该用户将继续获得红色警告)。

只有所有者可以将其部署为Web应用程序,其他尝试使用该应用程序的用户将不会收到消息错误,只是弹出窗口Go to <script name> (unsafe)永远卡住了!) 要更改所有者,请执行以下操作:使用所有者帐户打开工作表,单击Fetching Data> Share>单击触发“将来成为所有者”旁边的下拉菜单的箭头> {{1} }

答案 2 :(得分:0)

在尝试将脚本作为Web应用程序后,我得到了“ doGet”。 “ doGet”是什么意思?

答案 3 :(得分:0)

我确认@MagTun和@browly的解决方案共享文件并等待15分钟。即使我以编程方式授予了文件编辑权限,我上周也遇到了这个问题。棘手,因为有些用户获得了屏幕上的权限来授予权限(正确),但有些用户却收到了“您需要权限”消息或“对不起,目前无法打开文件”(错误)。但是我观察到,经过一段时间后,无论是否显式请求访问文件,用户都可以运行脚本。因此,实际上不需要其他任何操作,只需等待15分钟左右,它就会始终提示您进行许可。感谢您的提示,它确认了我的问题的解决方案。