普段固定メンバーで麻雀を打つ中で、長期的に成績を管理できるものが欲しくなったので、スプレッドシートを用いて作成しました。せっかくなので、公開しようと思います。
1半荘終わりの得点を入力するだけで、
- 30000点返しとウマを含んだ清算を自動で行い、
- 総合成績と当日成績に反映する
という特徴があります。
↓スプレッドシート(閲覧のみ)
ダウンロード
こちらからダウンロードできます
https://docs.google.com/spreadsheets/u/1/d/187EWZpvF5d7TZxw0RqlPe6Q235rciJ5VTwxGPsZC_aA/copy
機能
- 総合成績シート
- 総合順位と総合成績を確認できる。
- その他、トップ率や平均順位もわかる。
- 成績をつけるメンバー(雀士)は増やすor減らすことができる。
- 当日成績シート
- 1半荘終わりの得点から自動で清算を行う。
- 当日のトータル成績を表示する。
- さらに、総合成績に自動で反映する。
使い方
こちらにまとめています。
https://docs.google.com/spreadsheets/d/1cHjgzEfywq4t4-P6taEn5blFH8bXteUJQies2Z0TkTA/edit#gid=1435940976
清算について
本管理シートでは、30000点返しのウマが1位:+50, 2位:+10, 3位:-10, 4位:-30
で行っています。しかし、スプレッドシートに付随したGAS(Google Apps Script)のコードを変更することで、清算の計算方法を変えることができます。
例えば、順位ウマはcalc.gsにて変更可能です。
calc.gs
// 登録画面から情報を取得し、順位通りのリスト(["名前","成績"])を返す
function get_name_and_score() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('当日成績');
const rank_uma = [50, 10, -10, -30]; // 順位ウマ
let registration_list = sheet.getRange('A3:C6').getValues();
// 点数と順位からリストの並び替え
let registration_list_sorted = registration_list.sort((a, b) => b[1] - a[1] || a[2] - b[2]);
// 順位から成績を計算し、順位を除く
let result_list = registration_list_sorted.map(
(item, index) => [item[0], (item[1] - 30000)/1000 + rank_uma[index]]
);
return result_list
}
その他具体的なコードはGitHubからも確認できます。
今後の改善点
- エラー発生時の処理を追加する
- ドキュメントの充実化
- 清算方法をスプレッドシートから設定できるようにする