条件付き数値出力サーバスクリプト
テスト結果のテーブルには、「分類A」を使用してチーム名の選択肢を登録しておき、同様の内容を「分類A」として集計テーブルにも登録しておきます。
テスト結果テーブルには、国語の点数を「数値A」、算数の点数を「数値B」、社会の点数を「数値C」に登録します。集計テーブルには、国語の最高点、最低点、平均点をそれぞれ、「数値A」「数値B」「数値C」とし、算数、社会においても、「数値D」「数値E」「数値F」、「数値G」「数値H」「数値I」としておきます。
ここまで準備ができたら、適当にテスト結果テーブルに情報を登録しましょう。
さて、ここで以下のサーバスクリプトを登録しましょう。条件は「作成前」と「更新前」にチェックを入れておいてください。
ColumnFilterHashで、集計テーブルで指定したチーム名で、テスト結果テーブルの情報をチーム名でフィルタしてデータを抽出するようになり、items.Maxやitems.Min、items.Averageで数値出力するようになります。なお、以下の19508部分は、テスト結果テーブルのSiteIDとなっていますので、実際のテーブルのSiteIDに合わせて修正してください。
<スクリプト>
try {
context.Log('結果記録テーブルのデータ取得');
let team = model.ClassA;
//国語の点数
model.NumA = items.Max(19508, 'NumA', '{"View":{"ColumnFilterHash":{"ClassA":"[' + team + ']"}}}');
model.NumB = items.Min(19508, 'NumA', '{"View":{"ColumnFilterHash":{"ClassA":"[' + team + ']"}}}');
model.NumC = items.Average(19508, 'NumA', '{"View":{"ColumnFilterHash":{"ClassA":"[' + team + ']"}}}');
//算数の点数
model.NumD = items.Max(19508, 'NumB', '{"View":{"ColumnFilterHash":{"ClassA":"[' + team + ']"}}}');
model.NumE = items.Min(19508, 'NumB', '{"View":{"ColumnFilterHash":{"ClassA":"[' + team + ']"}}}');
model.NumF = items.Average(19508, 'NumB', '{"View":{"ColumnFilterHash":{"ClassA":"[' + team + ']"}}}');
//社会の点数
model.NumG = items.Max(19508, 'NumC', '{"View":{"ColumnFilterHash":{"ClassA":"[' + team + ']"}}}');
model.NumH = items.Min(19508, 'NumC', '{"View":{"ColumnFilterHash":{"ClassA":"[' + team + ']"}}}');
model.NumI = items.Average(19508, 'NumC', '{"View":{"ColumnFilterHash":{"ClassA":"[' + team + ']"}}}')
} catch (e){
context.Log(e.stack);
}
テーブル情報を一定の条件で抽出して数値出力
こんにちは、CCSの田中です。
まだまだサーバスクリプトについて勉強中な今日この頃です。
今回は、テーブルから条件で抽出してきたものに対して、数値出力をするサンプルを紹介します。
国語、算数、社会の各教科のテストの結果を保存するテーブルを作成し、このテーブルに「氏名とチーム名、各教科の点数」を登録します。
次に、集計テーブルとして、各チームごとに「各教科の最高点、最低点、平均点」を保存するテーブルを作成します。
集計テーブルで選択したチームの各教科の最高点、最低点、平均点を1レコードとして作成されるようになります。あまり現実的な例ではないかもしれませんが、サンプルとしてはわかりやすいと思いますので、参考にしてください。
具体的なスクリプトについては次で説明します。