【问题标题】:Remove authorisation required for script on Google sheets删除 Google 表格上的脚本所需的授权
【发布时间】:2019-12-23 21:54:30
【问题描述】:

我在为用户创建的 Google 表格上运行了一些绑定脚本,因为脚本功能都需要授权。

脚本通过插入电子表格本身的按钮运行。我想删除授权过程,以便匿名用户可以运行脚本 - 我尝试将脚本部署为 Web 应用程序,但这没有奏效。

有没有人知道我可以做些什么来创建这些脚本,以便任何人都可以运行脚本而无需通过 Google 帐户授权?

非常感谢

附:不要建议我让所有用户都创建 Google 帐户,因为这不会发生! :-)

【问题讨论】:

  • 使用 webapp 部署它以像你一样运行并允许任何人,包括匿名。

标签: google-apps-script google-sheets


【解决方案1】:
  • 您想让未登录 Google 的用户通过单击电子表格上的按钮来运行电子表格的容器绑定脚本。
  • 您想让用户在未经授权的情况下运行脚本。

如果我的理解是正确的,那么这个答案呢?请认为这只是几个可能的答案之一。

问题和解决方法:

不幸的是,在当前阶段,任何未登录 Google 的用户都无法通过单击电子表格上的按钮来运行脚本。这已经在你的问题中提到了。这种情况与自定义菜单相同。

所以在这个答案中,我想提出一个解决方法。

在此解决方法中,使用了 OnEdit 事件触发器。根据您的问题,我认为您的脚本可能包含要求授权范围的方法。所以在这里,OnEdit 事件触发器被用作可安装触发器。当脚本由 OnEdit 事件触发器运行时,脚本以所有者身份运行。当您将 OnEdit 事件触发器安装为可安装触发器时,将运行授权过程。所以当用户使用这个脚本时,不需要授权过程。

用法:

要使用此示例脚本,请执行以下流程。

  1. 通过将您的脚本包含到脚本编辑器中来复制并粘贴以下脚本。
  2. Install the OnEdit event trigger to installedOnEdit as the installable trigger
  3. 复选框用作执行脚本的按钮。为了执行脚本,作为测试用例,请在“A1”单元格中打上一个复选框。

示例脚本:

function installedOnEdit(e) {
  var lock = LockService.getScriptLock();
  if (lock.tryLock(10000)) {
    var range = e.range;
    try {
      if (range.getA1Notation() == "A1" && e.value == "TRUE") {


        // Please put your script here.


      }
    } catch(err) {
      throw new Error(err)
    } finally {
      range.uncheck();
      lock.releaseLock();
    }
  }
}
  • 在此脚本中,当您选中复选框时,将运行 if 语句中的脚本。当脚本完成时,e.range.uncheck() 取消选中该复选框。至此,复选框恢复待机状态。
  • 通过LockService,运行脚本的独占处理。
  • 如果您的脚本处理时间超过10秒,请修改lock.tryLock(10000)

参考资料:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

【讨论】:

  • 谢谢@Tanaike - 看起来你有答案了!我已复制该脚本,但出现以下错误:TypeError: Cannot read property "range" from undefined. (line 4, file "Code") 有什么想法吗?
  • 也可以在更改复选框所在的单元格位置时确认,我是否将这一行 if (range.getA1Notation() == "A1" && e.value == "TRUE") { 更改为 if (range.getF1Notation() == "F1" && e.value == "TRUE") { - 非常感谢
  • @Gav 感谢您的回复。我不得不为我糟糕的英语水平道歉。我认为错误的原因是您直接使用脚本编辑器运行函数installedOnEdit。请阅读“用法:”部分。当您运行脚本时,请选中“A1”单元格中的复选框。首先,请确认脚本是否有效。此答案是与任何人一起运行脚本的解决方法。如果您能合作解决您的问题,我很高兴。
猜你喜欢
  • 2015-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
  • 2016-10-21
  • 1970-01-01
  • 2014-08-23
相关资源
最近更新 更多