むにえる牧場

毎日むにえるをつくっています

GASで名簿からランダムに抽選するルーレットを作る

概要

とある新社会人になった友人から、「新卒内で当番をランダムに決めるためのアプリが欲しい」と相談を受けたのでGoogle Apps Script(以下GAS)でサクッと名簿ルーレットのようなものをつくってみました。

できあがったものはこんな感じ
(ちなみにこれは各曜日の掃除当番を決めるみたいな感じのものです)

f:id:jalemy:20190518172119g:plain
名簿ルーレットの動作サンプル

コード

ハマりどころ

x列の要素があるセルのみすべて取得する

sheet.getRange('A:A').getValues()

これでA列の値をすべて取得できるのですが、空のセルまで取得してしまうため、余分な要素がある配列になってしまいます。
そこで Array.prototype.filter() を利用して空要素を除外します。

sheet.getRange('A:A').getValues().filter(String)

セルの内容のみ削除する

RangeObject.clear()
RangeObject.clearContent()

clear() を利用するとセルの色付け設定など、すべてが消えてしまいます。
clearContent() を利用すれば入力されている値のみ削除できます。

スプレッドシートのボタンとGASの処理を結びつけ

挿入 > 図形描画 でボタンっぽいものが作れます。
ボタンの上で右クリックすると、ボタン上にハンバーガーメニューアイコンが出てくるので、 スクリプトを割り当て を選択します。
自分で作成したメソッド名を指定すればボタンクリックでイベント発火のトリガーとしてボタンを利用できるようになります。

f:id:jalemy:20190518173512p:plain
ボタンにGASのスクリプトを割り当て

まとめ

2,3時間程度で要望を整理しながら作れたので、ちょっとしたツールのようなものを作るのにGASは便利だなーという感想です。
SpreadSheetを利用する機会は多々ありますし、Excelと違って共有するのも楽です。
そのうちGAS + TypeScript環境も整理していろいろ作りたいです。