首页 > 解决方案 > 如何访问将访问权限设置为仅使用公司帐户部署的 Web 应用程序?

问题描述

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

为此,我将脚本部署为 Web 应用程序,然后在工作表上提供一个按钮,该按钮连接到访问硬编码 URL 的简单函数。

我的问题是,这种机制仅在 Web 应用程序部署为Anyone, even anonymous. 我宁愿将其保留在公司域中,也就是登录用户。

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

我可以做些什么来只允许登录用户“运行”该 URL?

标签: google-apps-scriptweb-applicationsurlfetch

解决方案


我有一个类似的问题,所以这就是我所做的。

  1. 创建了一个检查授权用户的自定义函数
  2. 部署脚本,使其可访问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

然后使用以下返回布尔值(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;
}

最后,在你的函数中,在提供 HTML 文件之前,用一个条件doGet(e)包装它;IF如下所示 -

function doGet(e) {
  var htmlFile;
  var title;
  if (userAccess()) {
    htmlFile = 'Index';
    title = 'Index'
    return HtmlService.createHtmlOutputFromFile(htmlFile).setTitle(title);
  }
}

推荐阅读