Googleサイトにアクセスする (4/6)
作成:2011-07-25 09:04
更新:2011-11-04 16:52
更新:2011-11-04 16:52
■Pageオブジェクトの利用
サイトに表示されるWebページを扱うために用意されているのが「Page」オブジェクトです。まずは、Pageオブジェクトの取得から整理していきましょう。ただし! その前に、頭に入れておいてほしいことがあります。それは、「Siteの中には、ただPageオブジェクトがずらっと入っているわけではない」という点です。
実際にGoogleサイトを利用したことがあればわかることですが、サイトのページは階層的に組み込まれています。各ページは親子関係がつけられており、あるページに関連するページは、そのページの「子ページ」として組み込めるようになっています。
ですから、ページを扱う場合は、「どの階層にあるページを取り出すか」といったことを考える必要があります。――では、ページの取得から。
・Pageオブジェクトの取得
※オプションの要素
type――ページの種類(PageType配列)
start――ページ取得の開始位置(整数)
max――最大数(整数)
search――検索条件(テキスト)
includeDrafts――下書きを含むか否か(真偽値)
includeDeleted――削除したページを含むか否か(真偽値)
いずれもSiteとPageの両オブジェクトに同じものが用意されています。Siteはそのサイト内から、Pageはそのページ内(そのページの階層内)からPageを取得します。
いくつか補足しておきましょう。getAllDescendantsは全Pageを取得するためのもの、getChildrenは子ページを取得するものです。searchは、検索条件を引数に指定することで、その条件に合致するページを取得します。これらはいずれも、Pageオブジェクトの配列が返されます。残るgetChildByNameは、ページ名を指定して取り出すもので、これのみは配列ではなくただ1つのPageが返されます。引数のオプションは、必要な情報をまとめたオブジェクト(連想配列)の形で用意します。
続いて、Pageオブジェクトの生成です。これは以下のようなメソッドが用意されています。
・Pageオブジェクトを生成する
それぞれ、作成するページの種類ごとにメソッドが用意されているのがわかりますね。createListPageでは、第4引数に、作成するリストの列の名前をテキスト配列で渡します。またcreatePageFromTemplateは、あらかじめ用意されているPageをコピーして新しいPageを作るもので、Pageオブジェクトをテンプレートとして引数に指定します。
作成したPageは、初期状態ではサイトのルート下に置かれます。特定のページの子ページにするような場合は、「そのページの親ページ」に関する以下のメソッドを利用します。
・親ページに関するもの
では、これらを利用するサンプルを下に挙げておきましょう。これは、example.comドメインのmysamplesiteサイトを操作するサンプルです。ドメイン名とサイト名をそれぞれ修正して使ってください。
実行すると、アクティブシートにページ名を尋ねるダイアログが現れます。ここで名前を入力すると、その名前のWebページを作成し、一番最後に作られたページの子ページに設定します。いくつかページを作ってみると、それらが入れ子になって配置されるのが確認できるでしょう。
ここでは、Siteを取得した後、getAllDescendantsでPage配列を取得しています。そしてcreateWebPageで新しいWebページを作り、setParentで、取得したPage配列の一番最初の子ページに設定しています。
実際にGoogleサイトを利用したことがあればわかることですが、サイトのページは階層的に組み込まれています。各ページは親子関係がつけられており、あるページに関連するページは、そのページの「子ページ」として組み込めるようになっています。
ですから、ページを扱う場合は、「どの階層にあるページを取り出すか」といったことを考える必要があります。――では、ページの取得から。
・Pageオブジェクトの取得
変数 = 《Site/Page》.getAllDescendants( オプション );
変数 = 《Site/Page》.getChildren( オプション );
変数 = 《Site/Page》.search( クエリー, オプション );
変数 = 《Site/Page》.getChildByName( 名前 );
※オプションの要素
type――ページの種類(PageType配列)
start――ページ取得の開始位置(整数)
max――最大数(整数)
search――検索条件(テキスト)
includeDrafts――下書きを含むか否か(真偽値)
includeDeleted――削除したページを含むか否か(真偽値)
いずれもSiteとPageの両オブジェクトに同じものが用意されています。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を取得した後、getAllDescendantsでPage配列を取得しています。そしてcreateWebPageで新しいWebページを作り、setParentで、取得したPage配列の一番最初の子ページに設定しています。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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プログラミング入門」に戻る