libro
www.tuyano.com
初心者のためのGoogle Apps Scriptプログラミング入門

Googleサイトにアクセスする (4/6)

作成:2011-07-25 09:04
更新:2011-11-04 16:52

■Pageオブジェクトの利用

サイトに表示されるWebページを扱うために用意されているのが「Page」オブジェクトです。まずは、Pageオブジェクトの取得から整理していきましょう。ただし! その前に、頭に入れておいてほしいことがあります。それは、「Siteの中には、ただPageオブジェクトがずらっと入っているわけではない」という点です。

実際にGoogleサイトを利用したことがあればわかることですが、サイトのページは階層的に組み込まれています。各ページは親子関係がつけられており、あるページに関連するページは、そのページの「子ページ」として組み込めるようになっています。

ですから、ページを扱う場合は、「どの階層にあるページを取り出すか」といったことを考える必要があります。――では、ページの取得から。

・Pageオブジェクトの取得
変数 = 《Site/Page》.getAllDescendants( オプション );
変数 = 《Site/Page》.getChildren( オプション );
変数 = 《Site/Page》.search( クエリー, オプション );
変数 = 《Site/Page》.getChildByName( 名前 );

※オプションの要素
type――ページの種類(PageType配列)
start――ページ取得の開始位置(整数)
max――最大数(整数)
search――検索条件(テキスト)
includeDrafts――下書きを含むか否か(真偽値)
includeDeleted――削除したページを含むか否か(真偽値)

いずれもSitePageの両オブジェクトに同じものが用意されています。Siteはそのサイト内から、Pageはそのページ内(そのページの階層内)からPageを取得します。

いくつか補足しておきましょう。getAllDescendantsは全Pageを取得するためのもの、getChildrenは子ページを取得するものです。searchは、検索条件を引数に指定することで、その条件に合致するページを取得します。これらはいずれも、Pageオブジェクトの配列が返されます。残るgetChildByNameは、ページ名を指定して取り出すもので、これのみは配列ではなくただ1つのPageが返されます。引数のオプションは、必要な情報をまとめたオブジェクト(連想配列)の形で用意します。

続いて、Pageオブジェクトの生成です。これは以下のようなメソッドが用意されています。

・Pageオブジェクトを生成する
変数 =《Site/Page》.createWebPage( タイトル, 名前, HTMLコード );
変数 =《Site/Page》.createAnnouncementsPage( タイトル, 名前, HTMLコード );
変数 =《Site/Page》.createFileCabinetPage( タイトル, 名前, HTMLコード );
変数 =《Site/Page》.createListPage( タイトル, 名前, HTMLコード, 列名 );
変数 =《Site/Page》.createPageFromTemplate( タイトル, 名前, テンプレート );

それぞれ、作成するページの種類ごとにメソッドが用意されているのがわかりますね。createListPageでは、第4引数に、作成するリストの列の名前をテキスト配列で渡します。またcreatePageFromTemplateは、あらかじめ用意されているPageをコピーして新しいPageを作るもので、Pageオブジェクトをテンプレートとして引数に指定します。

作成したPageは、初期状態ではサイトのルート下に置かれます。特定のページの子ページにするような場合は、「そのページの親ページ」に関する以下のメソッドを利用します。

・親ページに関するもの
変数 =《Page》.getParent();
《Page》.setParent( Pageオブジェクト );

では、これらを利用するサンプルを下に挙げておきましょう。これは、example.comドメインのmysamplesiteサイトを操作するサンプルです。ドメイン名とサイト名をそれぞれ修正して使ってください。

実行すると、アクティブシートにページ名を尋ねるダイアログが現れます。ここで名前を入力すると、その名前のWebページを作成し、一番最後に作られたページの子ページに設定します。いくつかページを作ってみると、それらが入れ子になって配置されるのが確認できるでしょう。

ここでは、Siteを取得した後、getAllDescendantsPage配列を取得しています。そしてcreateWebPageで新しいWebページを作り、setParentで、取得したPage配列の一番最初の子ページに設定しています。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

function makePage(){
	var site = SitesApp.getSite("example.com","mysamplesite"); // ドメインは修正!
	var pages = site.getAllDescendants({start:0,max:100});
	Logger.log(pages[0].getUrl());
	var str = Browser.inputBox("名前を入力:");
	var page = site.createWebPage(str,str,"<h3>" + str + "</h3><p>new page.</p>");
	page.setParent(pages[0]);
}

※関連コンテンツ

「初心者のためのGoogle Apps Scriptプログラミング入門」に戻る