如何访问部署为仅使用公司帐户访问权限设置的 Web 应用程序?

How to access a Web App deployed with access permissions set to only with company account?

我正在尝试启用由 URL 触发的应用脚本。

为此,我将脚本部署为 Web 应用程序,然后在 sheet 上提供一个按钮,该按钮连接到一个访问硬编码 URL.

的简单函数

我的问题是,此机制仅在为 Anyone, even anonymous 部署 Web 应用程序时才有效。我宁愿将它保留在公司域中,也就是登录用户。

但是,UrlFetchApp.fetch(url) 即使对于登录用户也不起作用。

如何才能仅允许登录用户“运行”URL?

我遇到了类似的问题,所以这就是我所做的。

  1. 创建了一个检查授权用户的自定义函数
  2. 已部署脚本,以便 Anyone, even anonymous
  3. 可以访问它

首先,声明您打算允许访问的域 -

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

然后使用下面的函数returns一个boolean值(truefalse) -

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);
  }
}