さて,初記事です.笑 研究室で定期的に席替えをすることになってるんですが,席決めたり記録したりするのめんどくさいよねってことでボタンひとつでどっちもやってくれるアプリ(?)をGoogle Spreadsheet + Google Apps Scriptで書いてみました.実際に使うかどうかは微妙です.笑
Google Apps Scriptとは?
Google Apps Scriptとは,Googleのサービス(CalenderとかSpreadsheetとか)と連携して動かすことのできるスクリプトです.Javascriptで書けるので学習コストが低くて嬉しいですね.使い方はAPI Referenceを見ればだいたい分かるのではないかと.今回はこのGoogle Apps Scriptを使って席替えアプリを作っちゃおうというわけです.
書いてみる
とりあえずScript Editiorを開きましょうと.
すると,あんまり使いやすくないこんな感じのエディターが立ち上がります.
とまあ,後は書くだけですね.
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)
あら簡単.席替えアプリの完成です.
席数とかの拡張性も皆無ですし完成度が全然高くないですが...一応使えるレベルではあるかな?笑 変更履歴とか残したり席数の設定をSpreadsheet側からやったりしようかと思ってましたが,めんどくさくなってしまってやってません.少なくとも戻すボタンはあった方がいい気がする...笑 まあ,Google Apps Scriptは初めて書きましたが,意外と便利じゃんって思いました.エディターの完成度はもうちょっと何とかして欲しいな..
ソースコードなど
公開の方法がイマイチわかってませんが一応公開しておきます.https://docs.google.com/spreadsheets/d/1L1O56Q3Q2d5jMubXBhhIQjKSkxbSNviSJYusunOhYso/edit?usp=sharing