google-apps-script - 如何访问将访问权限设置为仅使用公司帐户部署的 Web 应用程序?
问题描述
我正在尝试启用由 URL 触发的应用脚本。
为此,我将脚本部署为 Web 应用程序,然后在工作表上提供一个按钮,该按钮连接到访问硬编码 URL 的简单函数。
我的问题是,这种机制仅在 Web 应用程序部署为Anyone, even anonymous
. 我宁愿将其保留在公司域中,也就是登录用户。
但是,UrlFetchApp.fetch(url)
即使对于已登录的用户也不起作用。
我可以做些什么来只允许登录用户“运行”该 URL?
解决方案
我有一个类似的问题,所以这就是我所做的。
- 创建了一个检查授权用户的自定义函数
- 部署脚本,使其可访问
Anyone, even anonymous
首先,声明您打算允许访问的域 -
var authorizedDomains = 'google.com,google.io,google.org'; // comma separated
// DO NOT add http or https
// Currently, this setup doesn't support sub-domains (as the regex has not been configured to handle that
然后使用以下返回布尔值(true或false)的函数 -
function userAccess() {
var authorisedUser = false;
var emailRegex = /\@(.*)/;
var userDomain;
try {
userDomain = emailRegex.exec(activeUser)[1];
} catch (error) {
}
var authorizedDomainNames = authorizedDomains.split(',');
for (var i = 0; i < authorizedDomainNames.length; i++) {
if (authorizedDomainNames[i] == userDomain) {
authorisedUser = true;
break;
}
}
Logger.log(authorisedUser);
return authorisedUser;
}
最后,在你的函数中,在提供 HTML 文件之前,用一个条件doGet(e)
包装它;IF
如下所示 -
function doGet(e) {
var htmlFile;
var title;
if (userAccess()) {
htmlFile = 'Index';
title = 'Index'
return HtmlService.createHtmlOutputFromFile(htmlFile).setTitle(title);
}
}
推荐阅读
- sql - SQL中的聚合——如何加速查询
- python - SAWarning:对于延迟加载的属性“Similarity.tag1”,使用 uselist=False 返回多行
- r - 格式未应用于数据框
- google-app-engine - 在 GCP 上用于数据管道的最佳服务是什么
- javascript - 我想在单击正方形时显示一个列表,如何在 javascript 中执行此操作?
- typescript - 为什么打字稿将特定字符串视为类属性中的字符串?
- python - 在神经风格转移代码中获取“NaN”
- javascript - 带有单个花括号表达式的 Vue v-bind
- java - RecyclerView:不同按钮的不同ViewType
- apache-spark - databricks 中的 Delta 湖 - 为现有存储创建表