gpt4 book ai didi

google-apps-script - 我的 Google Apps 脚本如何由与工作表共享的其他人运行?

转载 作者:行者123 更新时间:2023-12-04 04:20:37 24 4
gpt4 key购买 nike

我有一个适合我的 Google Apps 脚本。与该工作表共享的其他人尝试使用它会收到消息:

You do not have access to perform that action. Please ask the owner of this item to grant access to you.



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

  • 我知道代码没有问题,因为它对我来说很好用,所以它一定是权限问题,但我不知道是怎么回事。工作表与他们共享,文件所在的 GDrive 文件夹也与他们共享。当我自己第一次运行脚本时,我必须授予脚本访问 GDrive 文件夹的权限,这显然已经完成了。

    我是我们组的开发人员,而不是数据的用户,但是 atm 我必须在每次需要时运行脚本来为用户更新数据,而不是他们自己做,这是...恼人的。

    任何帮助试图找出问题所在的地方都非常感谢。

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

    最佳答案

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

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

  • 用户第一次尝试使用该脚本时,他们必须允许该脚本(如果他们得到 This app isn't verified,他们应该点击底部的 Advanced,然后点击 Go to <script name> (unsafe))。在此之后,他们可能需要刷新工作表才能运行脚本。

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

    只有所有者才能部署为 Web 应用程序,其他尝试部署它的用户不会收到消息错误,只是一个弹出窗口 Fetching Data永远卡住了!)
    要更改所有者:使用所有者帐户打开工作表,单击 Share > Advanced > 单击触发“ future 所有者”旁边的下拉菜单的箭头 > Set as owner

    关于google-apps-script - 我的 Google Apps 脚本如何由与工作表共享的其他人运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44672775/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com