0

有谁知道如何检查 Google 网站是否存在?

我正在尝试使用var site = SitesApp.createSite(domain, siteName, name, summary);来创建一个新站点。但是,如果站点(读取 URL)已经存在,则会引发错误。

然后我尝试使用它var test = SitesApp.getSiteByUrl('https://sites.google.com/a/' + domain + '/' + siteName);来检查该站点是否存在,但如果它不存在则会抛出错误。

我想要的最终结果是:

  1. 检查站点是否存在。
  2. 如果存在,修改站点名称(即添加'1')到它的末尾,并再次检查。
  3. 创建站点

我有两个可能的解决方案,但我对其中任何一个都不感兴趣。它们都将在一个 while 循环中运行,该循环将一直持续到找到一个不存在的 url。

解决方案 1 使用 try/catch 运行SitesApp.getSiteByUrl().

解决方案 2 使用 try/catch 和UrlFetchApp.fetch(url).getResponseCode(). 检查它是否返回“200 OK”。如果没有,请尝试使用从标头获取位置getHeaders(),然后将其解析为“WebspaceNotFound”。不幸的是,我不能单独依赖响应代码,因为一个不存在的站点和一个需要您登录的站点都报告为“302 临时移动”。

有一个简单的解决方法吗?我的任何一个解决方案听起来都比另一个更好吗?

4

1 回答 1

0

因为您可以获得域中所有站点的列表,所以您可以执行以下操作:

function siteExists(domain, siteName) {
  var sites = SitesApp.getSites(domain);
  sites.forEach(function(n, i, a){a[i] = n.getName()});

  if(~sites.indexOf(siteName)) return true;
  else return false;
}

请注意,如果您有很多站点,则可能需要进行多次 getSites 调用。另外,我不知道当您无法访问所有站点时这将如何工作,因为我是从管理员帐户进行测试的。希望它会为您指明正确的方向。

于 2013-03-11T20:44:23.527 回答