【发布时间】:2022-01-06 18:39:37
【问题描述】:
我将多个 Google Apps 脚本部署为库并添加到 Google 表格中。
当我与其他用户共享这些工作表时,问题就开始了。 为了让他们看到用户菜单加载,我需要让他们编辑访问我的库脚本。仅查看访问权限是不够的。然后我从他们那里收到以下错误消息“异常:尚未为您的 Apps 脚本管理的云平台项目启用 Service Admin SDK API”
而且我知道我正在使用函数 AdminDirectory.Members.insert(...); 我不想在 GSuite 中为他们添加 API 权限。
以下 oauthScopes 正在使用中:
“oauthScopes”:[
"https://www.googleapis.com/auth/drive",
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/documents",
"https://www.googleapis.com/auth/script.send_mail",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/userinfo.email",
“https://www.googleapis.com/auth/admin.directory.group.member”
]
我正在寻找一种解决方案来创建这些脚本,以便我能够将它们添加到我的 Google 表格中,其中用户菜单可以从脚本加载并由用户调用。库/附加组件中的所有脚本代码(例如:GSuite 创建新用户/将用户添加到组/打开、编辑文档/打开、编辑工作表)都应该通过我的凭证运行,而不是通过他们的凭证运行。用户不应该能够查看/编辑库/附加脚本的代码。
他们应该能够看到和编辑的唯一代码是工作表脚本文件中的小 onOpen 脚本。他们必须有权访问脚本库/附加组件,但只能运行它,从中调用函数。他们不应该能够阅读和编辑库/附加脚本代码。他们在电子表格中的代码非常小。只是一个 onOpen 触发器,它将从脚本加载菜单并访问可以从菜单调用的主要功能。这些将是公共职能。其余的都是私人的。
【问题讨论】:
-
如果我理解正确,您希望用户执行他们无权访问的脚本吗?这是不可能的。如果您install
onOpen触发器,您可以显示菜单而不授予他们访问库的权限,但如果他们无权访问功能代码,则不能让他们从菜单执行功能。 -
如果您希望他们执行调用 Admin SDK 的功能,您可以使用模拟您的服务帐户,但无论如何他们都需要访问这些功能。但是,如果您提供有关您的情况和目标的更多背景信息,也许可以找到解决方法。
-
对不起,如果我不能清楚地解释我的计划。当然,他们必须有权访问脚本库/附加组件,但只能运行。他们不应该能够阅读和编辑库/附加脚本代码,如果你愿意的话,就像一个应用程序一样。您可以运行应用程序,但看不到源代码。他们在电子表格中的代码非常小。只是一个 onOpen 触发器,它将从附加的库/附加组件中加载菜单并访问可以从菜单中调用的主要功能。这些将是公共职能。其余的可能是私有的。
-
邮件的目标不是让脚本在其凭据下运行,而是让库的创建者/用户运行。此外,脚本必须在实际工作表中做一些工作,并且还必须访问驱动器上的其他工作表和文档。因为我是管理员,所以我可以访问所有内容。如果新用户想使用此表格,那么我需要给他们一些 API 访问权限,对其他表格和文档的写入权限。我不确定我是否可以使用库来做到这一点。有谁知道 Sheet 的 Editor 插件可以做到这一点?
标签: google-apps-script google-sheets