【问题标题】:Start a script from Custom Menu, ask user questions, create new sheet without needing permissions?从自定义菜单启动脚本,询问用户问题,无需权限即可创建新工作表?
【发布时间】:2022-01-22 00:35:21
【问题描述】:

我有一个共享的 Google 表格,它是一家小公司的安装时间表。每张纸是一个星期。我已经创建了一些脚本操作来执行诸如查找数据更改之类的操作,以及在适当的情况下隐藏和取消隐藏行。这适用于共享电子表格的每个人,无需提示许可。

通过单击自定义菜单中的条目来执行创建新周的功能。然后它会提示用户输入第一周的日期和要创建的周数。经过一些用户输入错误检查后,它将隐藏的模板工作表复制到以周日期范围命名的工作表,更新日期输入单元格,复制工作表保护,然后取消隐藏新复制的工作表。这对我作为工作表所有者有用,但是,它正在为共享工作表的任何其他用户创建身份验证对话框。

我可以通过在 Google Cloud Platform 界面中将其部署为测试应用程序来解决此问题,但随后我必须专门与用户共享它,这 a) 不是 Google Workspace 的一部分并且 b) 很可能改变,因此需要持续的维护。 鉴于脚本正在修改“我的”工作表文件,我不明白为什么需要许可,我希望有办法解决这个问题。

我已经搜索并尝试了很多可能性,但似乎都没有解决问题。

有人有专业知识吗?我是一名称职的编码员,但对 Google Apps 比较陌生,所以请尽可能详细。

【问题讨论】:

    标签: google-apps-script google-sheets permissions


    【解决方案1】:

    从 Google Workspace 编辑器自定义菜单调用的函数在活动用户下执行。如果该函数使用任何需要授权才能运行的方法,它将显示您的脚本的 OAuth 同意屏幕。

    不幸的是,没有办法避免这种情况。即使通过传递适当的凭据通过UrlFechApp 调用API,在这种情况下调用Google Sheets API,也需要https://www.googleapis.com/auth/script.external_request 的活动用户授权。

    使用自定义菜单打开对话框或边栏以运行客户端代码的选项也需要用户授权脚本。

    考虑到上述如果你真的想避免要求用户授权任何事情,忘记使用自定义菜单。您可能会考虑使用可安装触发器,即在进行编辑时使用编辑/更改可安装触发器来调用函数,例如单击复选框或从数据验证下拉列表中选择一个值。

    相关

    【讨论】:

    • 谢谢Rubén。我在想可能是这样,所以我实际上重新编写了函数来查找对用户必须输入新一周日期的单元格的更改添加。然后我为 onEdit 使用了一个可安装的触发器,所以我认为你只是验证了我做对了!感谢您及时的回复。迈克
    猜你喜欢
    • 2021-08-22
    • 2019-09-17
    • 1970-01-01
    • 2015-02-01
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    相关资源
    最近更新 更多