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

2023-11-26

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

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

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

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

我知道代码没有问题,因为它对我来说工作得很好,所以它一定是权限问题,但我不知道如何解决。该工作表与他们共享,并且存储文件的 GDrive 文件夹也与他们共享。当我第一次自己运行脚本时,我必须授予脚本访问 GDrive 文件夹的权限,显然现在已经完成了。

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

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

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


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

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

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

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

只有所有者才能部署为 Web 应用程序,尝试执行此操作的其他用户不会收到消息错误,只会收到弹出窗口Fetching Data永远被困住!) 要更改所有者:打开包含所有者帐户的工作表,单击Share > Advanced> 单击触发“未来所有者”旁边下拉菜单的箭头 >Set as owner

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的 Google Apps 脚本如何由与工作表共享的其他人运行? 的相关文章

  • 自动递增 ID 号 Google Apps 脚本

    我想在向工作表添加新值时自动增加 ID 我尝试从当前的 ID 列表创建一个列表 但它只计数到 5 因此当自动递增时 它只会到达一个点并为每个输入保存该数字 以下是我尝试获取 ID 号列表的方法 但它没有获取整个列表 我缺少什么 var ss
  • 如何在多个文档中使用 Google Apps 脚本

    我有一个谷歌应用程序脚本 我想在多个文档中使用它 我也可能想稍后在这些文档中更改它 因此我必须使用same所有这些文档中的脚本 而不是该脚本的副本 我知道以下问题可能属于重复问题 但我不愿意接受它的答案 Google Apps 脚本 如何在
  • 如何在运行脚本之前提交活动单元格中所做的更改? (Google 表格/Google Apps 脚本)

    我正在使用 Google Apps 脚本在 Google 表格中创建提交表单 该表单位于一页上 提交内容被移至第二个隐藏页面 当用户填写表单后 他们按下提交页面上的按钮以激活脚本 我遇到的问题是 当用户填写最后一个单元格然后单击按钮时 输入
  • 插入行 python gdata.spreadsheets.client

    我对专门用于谷歌电子表格的 python gdata API 有点困惑 使用 gdata spreadsheet service 可以很容易地组合一个字典并将其作为新行插入到谷歌电子表格中 如下所示http www mattcutts co
  • 我们可以使用 Google Spreadsheet 作为后端数据库吗

    我正在尝试开发一个应用程序 在其中从与某些事务相关的多个客户端获取数据 现在我想使用 Google Spreadsheet 进行一些分析 有什么方法可以使用 ASP Net MVC 使用 C 实现此目的 Google 提供 OAuth 当我
  • 在网站上显示存储在 Google 云端硬盘中的文件(例如图像)

    我想知道是否可以在公共网站上访问 显示存储在 Google Drive 中的图像等文件 解决方法是获取fileId with Google Drive SDK API然后使用这个Url 文件ID 这将是您在 Google 云端硬盘中的文件
  • Google 表格 - ARRAYFORMULA 中的 VLOOKUP

    我正在尝试在 Google 表格中的数组公式内进行 Vlookup 我有两张纸 S1 和 S2 每个列都有 3 个相同的列 A 列 日期 B 列 名称 和 C 列 付款类型 我想根据日期和姓名组合匹配将付款类型从表 2 读取到表 1 这意味
  • 使用 google apps 脚本添加大量响应

    我想制作一个脚本 添加大量 大约 1500 简历和候选人信息作为对表单的回复 我有谷歌电子表格的信息 我将其链接到表单 但我只能管理回复 即使我更改电子表格 或添加 表单中也不会发生更新 我正在添加行 但没有添加响应 那可能吗 我看到了 2
  • 使用 google.script.run 从 html 调用库函数

    我使用 Google App Script 实现库 并且使用 google script run 从库中调用函数时遇到一些困难 这是我的图书馆的代码 Code gs function ShowSideBar var html HtmlSer
  • window.location.href = window.location.href 返回空白页

    我正在使用 Google App Script 创建一个网页 单击按钮后 我尝试重新加载页面 但以下操作均无效 窗口 位置 href 窗口 位置 href window location reload true 他们正在重定向到空白页面 下
  • 谷歌表格在一行上的不同单元格范围上添加时间戳

    我一直试图在与该行上两个不同单元格范围相对应的行上放置两个时间戳 我已成功使用此脚本对行上的任何更改 第 5 列之后 添加时间戳 我想要的是 如果单元格范围 F 到 L 发生任何更改 则在 E 列中放置一个时间戳 然后 如果从 N 列到 Z
  • 如何同时使用 Google Drive API 和 Chrome Web Payments 许可 API

    更新以澄清问题 在尝试在我们的测试应用程序中使用 google Drive 示例应用程序 Dr edit for php 时 该应用程序已经成功实现了许可 API https developers google com chrome web
  • 如何发出HTTP请求将文件从reactjs上传到googledrive?

    我对文档有点困惑 我做了我的研究 资源很少 也许有人可以帮助我 我正在使用 CRNA create react app 我有一个按钮 可以使用 URI 将文件上传到 Google Drive 我已经有了 API 密钥 客户端 ID 启用 A
  • 重命名带有“完整工作表”图表的工作表会导致电子表格重新加载

    Google 表格允许将图表移动到自己的表格中 不过 谷歌脚本似乎无法重命名这些工作表 而不会使电子表格崩溃并强制其重新加载 要明白我的意思 请尝试以下操作 1 创建新的电子表格并在其中放入一些数据 2 使用数据创建任何类型的图表 3 编辑
  • 向文档添加动态页眉/页脚

    我想知道是否有一种方法可以向文档添加动态页眉或页脚 即在页脚中添加每个页面都不同的 页面标题 据我所知 编辑内置页眉或页脚将反映在每个页面上 我想知道是否有人想到了一种解决方法 通过访问页面上的第一行 最后一行并在那里插入文本来 强制 它
  • 如何编辑范围? // Google Classroom 控制 Google Apps 脚本中学生访问的权限范围

    我是一名高中老师 正在针对 Google Classroom 编写 Google Apps 脚本 我想创建一个类似于学生成绩视图的电子表格 我的学生可以使用他们的凭据进行访问 我已经成功编写了代码 这样我就可以通过在代码中显式放置学生的 I
  • 用于清除多个范围的 Google 脚本。

    我有许多电子表格 每周填写一次 并在新的一周开始时关闭 我编写了一个脚本来遍历并清除许多不同工作表中的各种范围 请参阅下面的代码 我的问题是有没有更好的方法来做到这一点 而不是必须一次清除一个部分的范围并拥有一百万个clearContent
  • XPath 将元素中的所有文本作为一个值获取,删除换行符

    我试图获取以下一组节点中的所有文本并作为一个值返回 而不是多个节点 p I love eating out br br This is my favorite restaurant br I will definitely be back
  • 如何通过 Apps Script & Drive SDK 创建新的脚本文件

    尝试通过在 Apps 脚本中调用 Drive SDK 来创建包含文件的新项目 下面的内容到底会放在哪里UrlFetchApp要求 files id 9basdfbd 749a 4as9b b9d1 d64basdf803 name Code
  • Google Apps 脚本中 $.ajax() 的服务器端等效项是什么?

    我想在 Google App 脚本中从服务器端代码执行 HTTP 请求Authorization标头 是否有用于发送 HTTP 请求的 App Script API Google Apps 脚本中的这段代码相当于什么 var api URL

随机推荐

  • 基于 CSV 的 Spark DataFrame 查询是否比基于 Parquet 的 Spark DataFrame 查询更快?

    我必须使用 Spark 从 HDFS 加载 CSV 文件到DataFrame 我想知道由 CSV 文件支持的 DataFrame 与由 parquet 文件支持的 DataFrame 是否有 性能 改进 查询速度 通常 我将如下所示的 CS
  • 使用 Google 进行 WPF 应用程序身份验证

    我发现了许多不同的 OAuth 解决方案以及一些库或纯请求 https github com googlesamples oauth apps for windows 然而 没有一个解决方案看起来像我真正需要的 目前 我的应用程序使用自己的
  • Durandal 2.0 - 用于嵌套菜单的子路由器?

    我正在构建一个应用程序 并希望显示一个 2 层菜单 并且两层始终可用 杜兰达尔2 0介绍了他们的新路由器 它支持 子路由器 可以更轻松地进行深度链接 我的问题 我可以永久加载我的 子 导航路线 并在父级不活动时呈现子菜单 还是 子路由器 设
  • 无空格黑白文本的正则表达式

    请告诉我如何检查正则表达式文本之间没有空格 如果您的意思是 检查字符串中是否有空格的正则表达式是什么 则以下模式将起作用 S 这将找到仅包含非空格 空格 换行符 制表符等 的任何字符串
  • 查找 List 中出现次数最多的数字

    有没有一种快速又好的使用 linq 的方法 怎么样 var most list GroupBy i gt i OrderByDescending grp gt grp Count Select grp gt grp Key First 或者
  • SliverAppBar(Flutter)中的最小高度?

    是否可以在 SliverAppBar 折叠时设置最小高度 如果是 我该怎么做 工作是在 SliverAppBar 中添加一个底部小部件 底部 首选尺寸 首选尺寸 尺寸 20 0 20 0 孩子 文本 这个问题的答案既是肯定的 也是否定的 如
  • 如何从MySQL中的select中删除?

    此代码不适用于 MySQL 5 0 如何重写它以使其工作 DELETE FROM posts where id SELECT id FROM posts GROUP BY id HAVING COUNT id gt 1 我想删除没有唯一 I
  • 嘲笑单例类

    我最近读到 创建一个类单例使得无法模拟该类的对象 这使得测试其客户端变得困难 我无法立即理解根本原因 有人可以解释一下是什么使得无法模拟单例类吗 另外 与创建类单例相关的还有其他问题吗 当然 我可以写类似的东西不要使用单例 它们是邪恶的 使
  • 一项工作中的错误会通过 mclapply 污染其他工作

    When mclapply X FUN 遇到某些值错误X 错误会传播到其他一些 但不是全部 值X require parallel test lt function x if x 3 stop else x mclapply 1 3 tes
  • 在 StringComparison 和 StringComparer 之间转换的优雅方式?

    一些 NET 方法使用字符串比较作为参数 有些使用字符串比较器 通常以以下形式比较器 差异是显而易见的 有没有一些优雅的方式如何获得字符串比较 from 字符串比较器或相反亦然 我总是可以编写使用的简单方法Case声明 但也许 NET 中已
  • React 组件中出现意外的标记“=”[重复]

    这个问题在这里已经有答案了 我可能缺少装载机吗 我认为我们应该能够在组件体中使用这些 ES6 函数 以避免必须执行 bind this syntax 反应文档 ERROR in client admin side components Fo
  • 用于可视化数学方程的库(如方程编辑器)[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找一个 C 库 它将为我提供方程编辑器功能 我不是在寻找数学库来评估数学表达式 有什么建议么 我建议使用我的 WPF Math 分支 我已经
  • setTimeout()和设置参数

    我有一些 jQuery 代码 如下所示 mainNav2 gt li mouseleave function var someNum Math random this attr id someNum var t setTimeout Hid
  • div 上的滚动条带有溢出:自动和百分比高度

    是否可以创建一个可以根据浏览器大小进行调整并且可以滚动的 div 我想用overflow auto关于 div 和百分比高度90 页面的结构是 div style height 100 headerinfo div div style he
  • 如何更改 iOS 自动更正建议的颜色?

    经过在这里 网络和开发者论坛上的大量搜索后 我不敢相信以前似乎没有人问过这个问题 无论 UITextField 或 UITextView 或其他任何内容的颜色如何 iOS 自动更正建议始终会以白色背景上的蓝色字体弹出 有时这看起来很糟糕 例
  • 从多维数组中删除重复的元素对

    我有一个看起来像这样的数组 1 coordinates 16 343345 35 123523 2 14 325423 34 632723 3 15 231512 35 426914 4 16 343345 35 123523 5 15 2
  • php 将日期时间转换为 UTC

    我需要一种简单的方法将日期时间戳转换为 UTC 从服务器所在的任何时区 希望不使用任何库 Use 斯特托时间从给定字符串 解释为本地时间 生成时间戳并使用gmdate将其作为格式化的 UTC 日期返回 Example 根据要求 这是一个简单
  • 如何在 Electron 应用程序中嵌入 mac 应用程序扩展?

    我正在尝试嵌入一个Finder 同步扩展在我的应用程序中用 Swift 编写Electron 我怎样才能让他们一起工作并相互沟通 我读过苹果文档但它只解释了如何将目标添加到本机应用程序 我还注意到我可以手动注入 appex应用程序中的编译文
  • 是否有任何谈论数字文字后缀的 C++ 风格指南?

    在我读过的所有 C 风格指南中 我从未见过任何有关数字文字后缀的信息 即3 14f 0L ETC 问题 是否有任何风格指南谈论其用法 或者是否有通用约定 我偶尔会遇到f图形编程中的后缀 编程领域类型的使用有什么趋势吗 我所知道的唯一已建立的
  • 我的 Google Apps 脚本如何由与工作表共享的其他人运行?

    我有一个非常适合我的 Google Apps 脚本 与该工作表共享的其他尝试使用它的人会收到以下消息 您无权执行该操作 请问楼主 此项目授予您访问权限 该脚本用于使用新数据行更新现有工作表 它是使用添加到 UI 的菜单项触发的 并执行以下操