かずきち。の日記

サーバサイドエンジニアのつぶやき

【GoogleAppsScript】学校の席替えアプリをGoogleフォームを使ってわくわくするイベントにしてみる

新学期は席替えの季節

学生は4月といえば、入学・進級の季節です。
そして恒例行事として、席替えがあります。
くじ引きをして席を決めていきますが、席替えアプリでスマートに非接触で席替えをしていきます。

docs.google.com

今回はこんなオンラインの席替えツールを作っていきます。

function onOpen() {
  var ui = SpreadsheetApp.getUi();           // Uiクラスを取得する
  var menu = ui.createMenu('追加したメニュー');  // Uiクラスからメニューを作成する
  menu.addItem('席替え開始', 'start');   // メニューにアイテムを追加する
  menu.addItem('席替えリセット', 'reset');   // メニューにアイテムを追加する
  menu.addToUi();                            // メニューをUiクラスに追加する
}

function start() {
  var count = Browser.inputBox("横何席教室を作成しますか?");
  var count2 = Browser.inputBox("縦何席教室を作成しますか?");
  Browser.msgBox("縦横" + count +"の教室を作成します");
  
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('席替え');
  
  //プルダウンの選択肢を配列で指定
  const values = ['赤', '青', '黄'];
  
  //入力規則を作成
  const rule = SpreadsheetApp.newDataValidation().requireValueInList(values).build();

  for(let x = 1;x <= count;x++){
    for (let y = 1; y <= count2;y++) {
      sheet.getRange(2*y-1,x).setValue((y-1)*count+x);
    }
  }
}

function showSidebar() {
  var htmlOutput = HtmlService.createHtmlOutputFromFile('index');
  SpreadsheetApp.getUi().showSidebar(htmlOutput);
}

氏名を入力するとランダムで番号を振って、教室の座席順を決めます。
今回は乃木坂のメンバーでやってみます。

クラスの人数はそれぞれ異なるので、動的に教室を作っていきます。

ダイアログで教室サイズを決めます。
次にクラスメイトの名前を入れたら重複無しで座席を決めていきます。

あとはクラスメイトの生徒を登録

事前に教室サイズを決めているので、教室サイズに合わせて縦横を調整すればどんな教室でも対応可能です。
オンラインで簡単に座席決定アプリが作成できますので、オンラインでやってみたい人はぜひ挑戦してみてください。