- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个脚本,它添加新行并以某种方式更改工作表。
我想锁定此工作表,使其无法手动编辑,但允许运行脚本。
有没有办法做到这一点?
最佳答案
是的,这不是最容易做的事情,但这是可能的。
但在我们开始之前,了解 Google 电子表格/工作表保护的工作原理很重要。
无法保护文件所有者的工作表或范围。因此,如果您还想保护自己的文件(假设您是所有者)。那么现在唯一可用的解决方案(我希望他们将来改变这一点)是将文件的所有权更改为另一个帐户。大多数人所做的是使用另一个他们不经常使用的 Google 帐户(如果您还没有,您可以轻松创建一个虚假帐户)。
然后,将文件传输到另一个帐户后,您可以使用常规 GUI 轻松锁定对范围、工作表或整个电子表格的更改。
好的,现在到脚本。脚本运行时,总是使用特定账户的授权,可以做这个账户能做的一切。例如,当有人直接从脚本编辑器运行脚本,或单击自定义菜单或图像时:它在单击的帐户下运行。但是如果你设置了 installable trigger ,那么脚本总是在首先设置触发器的帐户下运行(而不是谁在执行实际触发它的操作)。 Simple event triggers作为触发操作的人运行(您可以匿名思考),但他们无能为力,这是一项安全功能(阅读链接以获得更好的理解)。
最后,当将脚本发布为 Web 应用程序时,有一个选择框可以选择脚本是作为开发人员还是用户运行。很简单。
回到问题。由于我们已将所有人锁定在所需的工作表/范围之外。对于要更改此锁定区域的脚本,它必须以文件所有者身份运行!
如果您所做的更改是自动的,例如通过可安装的触发器,那么你很好。只需使用文件所有者帐户设置触发器即可。此外,如果您的用户正在“外部”访问脚本,即通过网络应用程序。那么这很容易,只需将 Web 应用程序设置为以开发人员(文件所有者)身份运行即可。
最复杂的情况是,如果您需要从自定义菜单运行脚本,然后该脚本将在单击它的人的权限下运行,而这些人本身无法对 protected 区域进行更改。解决这个问题的方法是将脚本部署为作为开发人员运行的 web-app,并从按钮单击运行函数以使用 UrlFetch 调用部署的 url。 ,可能会传递一些参数来指定需要做什么。然后,由于 webapp 作为开发人员(即文件所有者)运行,它可以进行任何所需的更改,并将任何值(通常是 JSON)返回(如果有返回值)到调用函数(作为用户并与他的 session 相关联),因此您可以在弹出窗口或 toastr 等上向他显示消息。
这有点棘手,但效果很好,您可以在电子表格中包含的同一个脚本上完成所有这些。但是,如果您担心您的用户可能会访问脚本编辑器并更改代码(这是可能的),那么您应该将 web-app 部分分离到不同的文件中,您不需要与他们共享。
关于google-apps-script - 使电子表格只能通过脚本编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19672557/
我这里有一个工作示例。 https://developers.google.com/google-apps/spreadsheets/我需要从用户的谷歌文档下载一些文件。 import com.goo
我需要您在以下方面的帮助: 假设我们有 3 个不同的组:(A、B、C) 我们在每个组中有几个值范围: (Eg. A has 0 - 100, 101 - 200 while B has 0 - 200
谁能告诉我有什么方法可以从 python 连接到电子表格吗?我想从表单中存储一些数据并将其提交到谷歌电子表格。请帮助解决这个问题。我必须遵循哪些步骤? 提前致谢... 最佳答案 连接到 Google
我正在尝试计算 2019 年给定时间范围内的月数。 我的数据如下所示: 我将开始日期和结束日期列的格式更改为“日期”。 “以月为单位的持续时间”和输出列具有数字格式。 我接近它如下: 如果开始日期(年
在设计上有一点问题,希望我能在这里寻求建议。接受 grails 可能是完全错误的工具,但这就是生活。 所以一直在努力开发一个网络应用程序,该应用程序基本上只是从谷歌电子表格中呈现大量信息并发回一些更新
我正在设计一个胖客户端(即非浏览器)Python 应用程序,它将与托管数据库进行通信。该应用程序的屏幕之一需要有一个网格/电子表格区域,允许显示多行数据、过滤、排序和更新多行信息。有人推荐一个具有此功
我在 Django 中有一个表单,可以将用户添加到 mySQL 数据库。然而,用户将不得不添加大量用户,并且一些信息将被复制和粘贴。所以我在想是否有一种方法可以有一个类似表单的电子表格,其中列标题是将
我在 Outlook VBA 中编写了一个程序,它根据 Excel 电子表格的内容创建一些电子邮件。一切正常,但是当程序终止时,我继续运行“EXCEL.EXE”进程,该进程会锁定电子表格,因此其他人无
如何使用公式来确定当前时区? 我使用的公式给出了意想不到的结果。 我的电子表格设置(文件 > 电子表格设置...): 时区: (GMT+01:00) 阿姆斯特丹 我使用的公式: =TEXT(NOW()
如何转换持续时间的小时数? 示例:在单元格 A1 中,我有 176 . 我希望单元格 A2 有 176:00:00 我想在 176 小时(持续时间)内转换数字 176。那可能吗?因为如果我在单元格中键
我收到了 4 个不同的采购订单,上面有一个随机的采购订单编号。 我仅在 A 列中填写采购订单号。 对于这个例子,我收到了下面列出的 4 个不同的采购订单。 采购订单 697533 - 2 项 采购订单
我需要编写循环遍历数据列的程序。根据单元格值和代表变量的每一列重置变量。 练习中的变量取决于循环的这些值。 如何在循环的每次迭代中将值增加 1 来循环遍历行? df=pd.DataFrame(r'C:
我正在做一些详尽的搜索,需要确定新域 (URL) 是否已经在电子表格中。但是,没有一个电子表格对象具有搜索功能,即在大多数文档对象中找到的 findText()。我觉得我错过了一些重要的东西。 我错过
我正在尝试在 Pandas 中导入一个 excel 电子表格,但由于数据“由用户在视觉上构建”以在视觉上对用户友好并且没有使用正确的数据结构,因此我遇到了一些问题。 结果,当在 Pandas 中作为数
我必须在 HTML 页面上显示多个图表,但我无法进行多个查询(直接在 google 电子表格上)。 实际上,我只是第一个查询显示的是谁。 我的代码: Page de pilotage
我使用以下代码作为将 html 网站上的用户输入数据发送到 Google 电子表格的方法: Javascript: function postContactToGoogle() { v
我有一个使用 Google Drive 和电子表格 API 的网站。我想要做的是,如果没有找到具有特定条件的电子表格,则在用户的 Google 云端硬盘上创建电子表格。该电子表格应该是我的 Googl
我目前链接到六个 Excel 电子表格,主要是因为用户在 Excel 中编辑数据更容易/更好(他们从未使用过 Access),而且任何更改都会立即反射(reflect),包括是否有新列添加后即可立即供
我正在努力通过 PowerShell 添加指向可变长度电子表格的链接,无论如何我都会遇到错误。这是我目前正在尝试制作的循环,它嵌套在一个 excel comobject 中, $sheet 代表 $e
在 Excel 电子表格中编写许多工作表可能需要一段时间。并行化它会很有帮助。 此代码运行良好,它使一个 Excel 电子表格在屏幕上弹出,其中包含四个名为 Sheet1、1、2 的工作表 和 3。
我是一名优秀的程序员,十分优秀!