[GAS][Sites]サイトに含まれる全てのページを取得するには: 逆引きGoogle Apps Script

2012 年 4 月 6 日 金曜日

▼サンプルスクリプト

指定したサイトに含まれるすべてのページを取得し、シートに一覧表示するサンプルスクリプト。

1
2
3
4
5
6
7
8
function listAllPages() {
  var mySite = SitesApp.getSiteByUrl('https://sites.google.com/xxxxxxxxx');
  var pages = mySite.getAllDescendants();
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  for(var i=0; i<pages.length; i++){
    sheet.getRange('A'+(sheet.getLastRow()+1)).setValue(pages[i].getTitle());
  }
}

行2: 今回ページを抽出するサイトオブジェクトを取得している。

行3: {サイトオブジェクト}.getAllDescendants()でサブツリーを含むすべてのページを取得することができる。詳細は後述。

行5-7: 取得したページのタイトルをシートに表示している。

構文

getAllDescendants(optAdvancedArgs)

パラメータ

optAdvancedArgs
type
ページの種類で検索対象を絞り込む。PageType参照。
start
検索結果の何件目から結果を取得するか。デフォルトは0。
end
何件取り出すか。デフォルトは200。startを10、endを100とした場合、全検索結果の10件目から110件目までが抽出される。
includeDrafts
下書きを検索対象に含めるかどうか
includeDeleted
削除済みページを検索対象に含めるかどうか
search
タイトルか本文が指定した文字列を含むページのみ抽出

戻り値

Page[]
条件にマッチするページとそのサブツリーのページ全て

注意点

パラメータでstart、endを指定して抽出数を調整しても、内部では一旦すべてのページを取得していると思われる。そのため、サイトに含まれるページ数が多くなればなるほど、処理時間は長くなる傾向にある。

この件に関しては以下のスレッドで報告されている。

スポンサードリンク

関連記事

コメントをどうぞ

トラックバック

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

http://www.bmoo.net/archives/2012/04/313854.html/trackback