libro
www.tuyano.com
Google Apps Scriptプログラミング [中級編]

ScriptDbによるオブジェクトデータベース (5/6)

作成:2012-07-01 14:12
更新:2012-07-01 14:12

■オブジェクトのソートとページネーション

queryなどによるオブジェクトの取得には、まだまださまざまな機能が用意されています。ここではそれらの機能から「ソート」と「ページネーション」についてまとめておきましょう。


●オブジェクトのソート
ScriptDbInstanceにより取得されたオブジェクト群(ScriptDbResultとして得られるもの)は、保管した順番(というより、それぞれに設定されたID順のようです)で取り出されます。

この並び順を変更する、いわゆる「ソート」のための機能もScriptDbInstanceには用意されています。以下のようなものです。
変数 = 《ScriptDbInstance》.sortBy( フィールド名 , 並び順の指定 );
第1引数には、並べ替えの基準となるフィールド名(オブジェクトのプロパティ名)を指定します。nameプロパティならば、"name"というようにテキストとして用意します。第2引数には、並べ方に関する値を指定します。これはScriptDbInstanceに用意されている以下のものから選びます。

ASCENDING――昇順
DESCENDING――降順
NUMERIC――数値として順番を扱う
LEXICAL――言葉(テキスト)として順番を扱う

これらは通常、「db.ASCENDING, db.LEXICAL」というように2つの項目をカンマで区切って記述するのが一般的です(つまり第2、第3引数として指定する)。これで「テキストとして昇順に並べ替える」といったことが指定できます。


●オブジェクトのページネーション
SciptDbInstanceからqueryなどの結果として返されるScriptDbResultには、ページネーションに関連する機能がいくつか用意されています。それらについて整理しておきましょう。

・取得する位置の指定
《ScriptDbResult》.startAt( 番号 );
オブジェクトを取り出す位置を指定します。例えば、startAt(5)とすれば、5番目(正確には、インデックスがゼロから始まるので6つ目になります)のオブジェクトから取り出します。

・取得する個数の指定
《ScriptDbResult》.limit( 番号 );
オブジェクトを取り出す最大数を指定します。例えば、limit(10)とすれば、最大10個のオブジェクトを取り出します。

・ページの指定
《ScriptDbResult》.paginate( ページ番号 , ページ内の個数 );
取得するページの指定をします。第1引数には取り出すページの番号(ゼロから開始です)、第2引数には1ページに収められるオブジェクトの個数を指定します。例えば、10個ずつをページ分けして取り出すとき、その3ページ目を取り出すには、paginate(3, 10)というように指定をします。


――下のリスト欄に簡単な例をあげておきました。personaldataオブジェクトを昇順に並べ替え、その最初から5項目だけを取り出してログに出力しています。

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

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

●プログラム・リスト●

function showDatas(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var db = ScriptDb.getMyDb();
  var result = db.query({type:"personaldata"});
  result.sortBy("name", db.ASCENDING, db.LEXICAL).startAt(0).limit(5);
  var i = 1;
  while(result.hasNext()){
    var obj = result.next();
    Logger.log(obj.getId() + ": " + obj.name + ", " + obj.mail + 
               ", " + obj.tel + ", " + obj.age);
  }
}

※関連コンテンツ

「Google Apps Scriptプログラミング [中級編]」に戻る