我正在尝试通过URL触发应用程序脚本。
为此,我将脚本部署为Web App,然后在工作表上提供一个按钮,该按钮连接到访问硬编码URL的简单函数。
我的问题是,只有在为Anyone, even anonymous
部署了Web App的情况下,此机制才有效。我宁愿将其保留在公司域中,也就是已登录的用户。
但是,UrlFetchApp.fetch(url)
甚至对于已登录的用户也不起作用。
我该怎么做才能仅允许已登录的用户“运行” URL?
谢谢
答案 0 :(得分:7)
我遇到了类似的问题,所以我就是这样做的。
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;
}
最后,在您的doGet(e)
函数中,在提供HTML文件之前,用IF
条件包装它;如下所示-
function doGet(e) {
var htmlFile;
var title;
if (userAccess()) {
htmlFile = 'Index';
title = 'Index'
return HtmlService.createHtmlOutputFromFile(htmlFile).setTitle(title);
}
}