LoginSignup
6
11

More than 5 years have passed since last update.

Google Spreadsheet + Google Apps Scriptで席替えアプリ

Last updated at Posted at 2015-01-06

さて,初記事です.笑 研究室で定期的に席替えをすることになってるんですが,席決めたり記録したりするのめんどくさいよねってことでボタンひとつでどっちもやってくれるアプリ(?)をGoogle Spreadsheet + Google Apps Scriptで書いてみました.実際に使うかどうかは微妙です.笑

Google Apps Scriptとは?

Google Apps Scriptとは,Googleのサービス(CalenderとかSpreadsheetとか)と連携して動かすことのできるスクリプトです.Javascriptで書けるので学習コストが低くて嬉しいですね.使い方はAPI Referenceを見ればだいたい分かるのではないかと.今回はこのGoogle Apps Scriptを使って席替えアプリを作っちゃおうというわけです.

書いてみる

とりあえずScript Editiorを開きましょうと.

Screen Shot 2015-01-06 at 18.09.29.png

すると,あんまり使いやすくないこんな感じのエディターが立ち上がります.

Screen Shot 2015-01-06 at 18.14.08.png

とまあ,後は書くだけですね.


function onClickButton() {
  changeSeat();
};

function changeSeat() {
  var members  = readMembers();
  members = shuffle(members);
  writeSeat(members);
  writeDate();
};

function readMembers() {
  var sheet   = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Members");
  var range   = sheet.getDataRange();
  var values  = range.getValues();
  return values[0];
};

function shuffle(array) {
  var shuffled = [];
  var len;
  while(len = array.length){
    var ele = array.splice(Math.floor(Math.random() * len),1)[0];
    shuffled.push(ele);
  }
  return shuffled;
};

function writeSeat(members) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Seat");

  // size of seats
  var rows = 2, cols = 5;
  var values = [];
  for(var i = 0; i < rows; i++){
    values[i] = members.slice(i*cols,(i+1)*cols);
  }
  // top left position of seats is 3,3
  var range = sheet.getRange(3, 3, rows, cols);
  range.setValues(values);
};

function writeDate(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Seat");
  var range = sheet.getRange("C7");
  var date = new Date();
  range.setValue(date.toLocaleString());
}

席替えのボタンを押したときにonClickButton()が発火するようにします.(オブジェクトを右クリックしてassign function)

Screen Shot 2015-01-06 at 18.20.23.png

あら簡単.席替えアプリの完成です.

Screen Shot 2015-01-06 at 18.22.41.png
Screen Shot 2015-01-06 at 18.25.06.png

席数とかの拡張性も皆無ですし完成度が全然高くないですが...一応使えるレベルではあるかな?笑 変更履歴とか残したり席数の設定をSpreadsheet側からやったりしようかと思ってましたが,めんどくさくなってしまってやってません.少なくとも戻すボタンはあった方がいい気がする...笑 まあ,Google Apps Scriptは初めて書きましたが,意外と便利じゃんって思いました.エディターの完成度はもうちょっと何とかして欲しいな..

ソースコードなど

公開の方法がイマイチわかってませんが一応公開しておきます.https://docs.google.com/spreadsheets/d/1L1O56Q3Q2d5jMubXBhhIQjKSkxbSNviSJYusunOhYso/edit?usp=sharing

6
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
11