如何检查Google网站是否存在?

时间:2013-03-11 19:27:09

标签: javascript google-apps-script google-sites

有谁知道如何检查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. 创建网站
  4. 我有两种可能的解决方案,但我对其中任何一种都不感兴趣。它们都将在while循环中运行,该循环将一直持续到找不到不存在的url。

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

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

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

1 个答案:

答案 0 :(得分: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调用。此外,由于我从管理员帐户进行测试,因此当您无法访问所有网站时,我不知道这将如何工作。希望它会指出你的方向。