[GAS][Sites]サイト名からサイトオブジェクト取得するには: 逆引きGoogle Apps Script

2012 年 7 月 22 日 日曜日

▼サンプルスクリプト

SitesAppにはサイト名からサイトオブジェクトを取得するメソッドは用意されていない。

そのため以下のサンプルでは、サイト名からサイトオブジェクトを取得するためのgetSitesByName_(siteName)というメソッドを作成している。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function sample(){
  var site = getSitebyName_('test');
  if (site != null){
    Browser.msgBox(site.getTitle());
  }
}
 
function getSitesbyName_(siteName){
  // Google Appsの場合はドメインを指定
  // sites.google.com/siteの下位に作成されたサイトは
  // ドメインを指定しない
  var sites = SitesApp.getSites('example.com');
  for(var i=0; i<sites.length; i++){
    var site = sites[i];   
    if (site.getName() == siteName){
      return site;
    }
  }
  return null;
}

行12 SitesApp.getSites(domainName)で、指定したドメインで、自分が参照権限のあるサイトオブジェクトをすべて取得している。Google Appsアカウントであればドメインを指定する必要があるが、sites.google.com/siteの下位に作成したサイト(gmailアカウントで作成することのできるサイト)の場合は指定する必要はない。
行13-
行18
取得したサイトオブジェクトを線形探索しながら、指定した名称にマッチしたサイトオブジェクトが存在するか比較している。マッチしたサイトオブジェクトを戻り値として返す。
行4 取得したサイトオブジェクトのサイトタイトルをメッセージボックスに表示。

サイト名とサイトタイトルの違い

サイト名:サイトを表す固有の名称。{サイトオブジェクト}.getName()で取得できる。トップページUrlの/以下の文字列を表す。サイト作成時に決定し、以後変更することはできない。

https://sites.google.com/site/{サイト名}

サイトタイトル:サイト作成後に変更することができる。サイトヘッダーに表示される。

注意点

サンプルで作成したgetSitesbyName_は、最初に名称がマッチしたサイトのオブジェクトを返し、線形探索を終了している。そのため、2件目以降はすべて無視されている。必要であれば、検索結果を配列で返すメソッドを作成して頂きたい。

また、{サイトオブジェクト}.getName()で一度に取得できるサイトオブジェクトは最大200件までとなっているので、200件以上サイトが存在する場合はgetSites(domain, start, max)またはgetSites(start, max)により、分割して検索する必要がある。

スポンサードリンク

関連記事

コメントをどうぞ

トラックバック

このエントリーのトラックバックURL:

http://www.bmoo.net/archives/2012/03/313443.html/trackback