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. サイトを作成する

考えられる解決策は2つありますが、どちらにもわくわくすることはありません。どちらもwhileループ内で実行され、存在しないURLが見つかるまで続きます。

解決策 1try/catchを使用して実行しますSitesApp.getSiteByUrl()

解決策 2try/catchを。で使用しUrlFetchApp.fetch(url).getResponseCode()ます。「200OK」が返されるかどうかを確認します。そうでない場合は、を使用してヘッダーから場所を取得し、getHeaders()「WebspaceNotFound」を解析してみてください。残念ながら、存在しないサイトと両方にログオンする必要があるサイトは「302 Moved Temporarily」として報告されるため、応答コードだけに頼ることはできません。

これを回避する簡単な方法はありますか?私のソリューションのどちらかが他よりも良く聞こえますか?

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 に答える