Javascript 如何检查谷歌网站是否存在?
有人知道如何检查谷歌网站是否存在吗 我正在尝试使用Javascript 如何检查谷歌网站是否存在?,javascript,google-apps-script,google-sites,Javascript,Google Apps Script,Google Sites,有人知道如何检查谷歌网站是否存在吗 我正在尝试使用var site=SitesApp.createSite(域、站点名、名称、摘要)以创建新站点。但是,如果站点(读取URL)已经存在,它将抛出一个错误 然后我尝试使用var test=SitesApp.getSiteByUrl('https://sites.google.com/a/“+域名+”/“+站点名称)检查站点是否存在,但如果不存在则会抛出错误 我希望的最终结果是: 检查站点是否存在 如果存在,请修改站点名称(即添加“1”) 到它的末尾,
var site=SitesApp.createSite(域、站点名、名称、摘要)代码>以创建新站点。但是,如果站点(读取URL)已经存在,它将抛出一个错误
然后我尝试使用var test=SitesApp.getSiteByUrl('https://sites.google.com/a/“+域名+”/“+站点名称)
检查站点是否存在,但如果不存在则会抛出错误
我希望的最终结果是:
检查站点是否存在
如果存在,请修改站点名称(即添加“1”)
到它的末尾,然后再次检查
创建站点
我有两种可能的解决方案,但我对其中任何一种都不满意。它们都将在while循环中运行,该循环将继续运行,直到找到不存在的url为止
解决方案1
使用try/catch运行SitesApp.getSiteByUrl()
解决方案2
将try/catch与UrlFetchApp.fetch(url.getResponseCode()
一起使用。检查是否返回“200 OK”。如果没有,请尝试使用getHeaders()
从标头获取位置,然后为“WebspaceNotFound”解析它。不幸的是,我不能仅仅依靠响应代码,因为一个不存在的站点和一个要求您以“302临时移动”的身份登录这两个报表的站点
有没有一个简单的解决办法?我的解决方案中有一个听起来比另一个好吗?因为你可以得到域中所有站点的列表,你可以这样做:
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电话。此外,我不知道这将如何工作时,你没有访问所有的网站,因为我从管理员帐户测试。希望它能为你指明好的方向 解决方案1是否存在问题?对我来说,这似乎是最好的解决方案。我同意Phil的观点,你也可以在try/catch中使用createSite
,这样,如果它没有失败,你的站点将在一个步骤中创建;-)谢谢菲尔和谢尔盖。我想我只是觉得在这种情况下使用try/catch有点像bass ackwards,但这似乎是最好的方式。不幸的是,我认为这只适用于管理员帐户,最终我的脚本将由最终用户运行。我后来添加的更新似乎没有正确发布。所以我要再次补充一点,不管你用哪种方式来判断这个网站是否存在。你提到的两种方法都很好。但如何处理结果很重要。您可以使用如下递归:function createSite(name){try{SitesApp.createSite('domain.tld',name)}catch(e){createSite(name+Math.round(Math.random()*10))}