2013-03-11 7 views
0

Google 사이트가 있는지 확인하는 방법을 아는 사람이 있습니까?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. 나는 두 가지 솔루션이 사이트

만들기,하지만 난 그들 중 하나에 흥분하지 않다. 둘 다 존재하지 않는 URL이 발견 될 때까지 계속 될 while 루프 내에서 실행됩니다.

해결책 1 SitesApp.getSiteByUrl()을 실행하려면 try/catch를 사용하십시오.

해결책 2 UrlFetchApp.fetch(url).getResponseCode()과 함께 try/catch를 사용하십시오. '200 OK'가 반환되는지 확인하십시오. 그렇지 않은 경우 getHeaders()을 사용하여 헤더에서 위치를 가져 와서 'WebspaceNotFound'로 구문 분석하십시오. 불행하게도, 존재하지 않는 사이트와 두 보고서를 '302 Moved Temporarily'로 로그온해야하는 사이트가 있기 때문에 응답 코드에만 의존 할 수는 없습니다.

쉽게 해결할 수 있습니까? 내 솔루션 중 하나가 다른 솔루션보다 좋게 들릴 수 있습니까? 당신이 사이트 정말 많이있는 경우, 여러 getSites 통화를해야 할 수도 있음을

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

참고 : 도메인에있는 모든 사이트의 목록을 얻을 수 있기 때문에

+1

해결 방법 1에 표시되는 문제가 있습니까? 그것은 나에게 가장 좋은 해결책 인 것 같습니다. –

+1

필 (Phil)에 동의하고 try/catch에서'createSite'를 사용하여 실패하지 않으면 사이트가 하나의 단일 단계로 생성됩니다 ;-) –

+0

Phil과 Serge에게 감사드립니다. 나는 try/catch를 사용하는 것이이 경우베이스 - 어쿠스틱으로 친절하지만 그것이 가장 좋은 방법 인 것 같다. –

답변

0

당신은 같은 것을 할 수 있습니다. 또한 관리자 계정에서 테스트 한 이후로 모든 사이트에 액세스 할 수 없을 때 어떻게 작동하는지 알지 못합니다. 그것이 좋은 방향으로 당신을 가리 키길 바랍니다.

+0

불행히도 관리자 계정에서만 작동하며 결국에는 최종 사용자가 스크립트를 실행합니다. –

+0

나중에 추가 한 업데이트가 제대로 게시되지 않은 것 같습니다. 그래서 사이트가 존재하는지 알아내는 데 어떤 방법을 사용할 지 상관하지 않습니다. 언급 한 두 접근법 모두 좋습니다. 결과를 처리하는 방법은 중요합니다. 다음과 같은 재귀를 사용하여 작업을 수행 할 수 있습니다. 'function createSite (name) { try {SitesApp.createSite ('domain.tld', name)} catch (e) {createSite (name + Math.round (Math. random() * 10))} }' – rcknr

관련 문제