ScriptDbによるオブジェクトデータベース (5/6)
作成:2012-07-01 14:12
更新:2012-07-01 14:12
更新:2012-07-01 14:12
■オブジェクトのソートとページネーション
queryなどによるオブジェクトの取得には、まだまださまざまな機能が用意されています。ここではそれらの機能から「ソート」と「ページネーション」についてまとめておきましょう。
●オブジェクトのソート
ScriptDbInstanceにより取得されたオブジェクト群(ScriptDbResultとして得られるもの)は、保管した順番(というより、それぞれに設定されたID順のようです)で取り出されます。
この並び順を変更する、いわゆる「ソート」のための機能もScriptDbInstanceには用意されています。以下のようなものです。
ASCENDING――昇順
DESCENDING――降順
NUMERIC――数値として順番を扱う
LEXICAL――言葉(テキスト)として順番を扱う
これらは通常、「db.ASCENDING, db.LEXICAL」というように2つの項目をカンマで区切って記述するのが一般的です(つまり第2、第3引数として指定する)。これで「テキストとして昇順に並べ替える」といったことが指定できます。
●オブジェクトのページネーション
SciptDbInstanceからqueryなどの結果として返されるScriptDbResultには、ページネーションに関連する機能がいくつか用意されています。それらについて整理しておきましょう。
・取得する位置の指定
・取得する個数の指定
・ページの指定
――下のリスト欄に簡単な例をあげておきました。personaldataオブジェクトを昇順に並べ替え、その最初から5項目だけを取り出してログに出力しています。
●オブジェクトのソート
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項目だけを取り出してログに出力しています。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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プログラミング [中級編]」に戻る