見出し画像

文化祭ゲームのランキング表を、スプレッドシートとchatGPTを使って作ってみました!

今年の文化祭では、クラスの出し物で教室でゲームを開催することになりました。
そこで、ゲームの記録をランキング形式で電子黒板に表示できるようにしてみました!


やりたいこと

手持ちのタブレットで結果を入力する

     ↓
電子黒板の画面に反映されるようにしたい!

そのために
    ↓
①入力シートに参加者のチーム名、点数を入力すると、A列に順位が反映される
②シート1に、順位ごとにチーム名が表示される
③クラッカーの絵を押すと、祝福動画が再生される

①入力シートに参加者のチーム名、点数を入力すると、A列に順位が反映される

→ RANK.EQ関数を使います!

今回は、B4の値(17点)が、B2~B300の点数の中で何位かを求めたい

◎入力した式
=RANK.EQ(B4,$B$2:$B$300,0)

◎式の意味
=RANK.EQ(順位を求めたい場所,順位を求めたい範囲,0)

*しかし
点数が同じになったとき、順位が同じになってしまう(51・52列)

B2からB300のセルにある点数の中で、B52の点数は何位か
+B2からB52までのセルで、B52値と重複するものがあれば、順位を1下げる 

◎入力した式
=RANK.EQ(B52,$B$2:$B$300,0)+COUNTIF($B$2:B52,B52)-1 

◎式の意味
+COUNTIF(重複を検索する範囲,重複を検索する値)-1 

  ↓
 結果



②シート1に、順位ごとにチーム名が表示される

→VLOOLUP関数を使う!


B5の値(順位)と一致するものを、「入力」シート中A2~A201の範囲から見つけ、A~Cのうち3列目(C列)の値を抽出

◎入力した式
=VLOOKUP(B5,'入力'!A2:C201,3,FALSE)

◎式の意味
=VLOOKUP(検索したい値,'検索するシート名'!検索+抽出する範囲,抽出する列,FALSE)

◎結果

1位、2位のAさん、Bさんが

ランキング表に反映されています!

なので点数を表示させる場合は、
=VLOOKUP(B5,'入力'!A2:B200,2,FALSE)
B5(1位)と同じ値を「入力」シートのA2~A200から探し、そのうち2列目(B列)の値を抽出
となります!


③クラッカーの絵を押すと、祝福動画が再生される

◎まず再生したい動画をドライブに保存


ドライブ上の動画を右クリック→「共有」→「リンクをコピー」

◎スクリプトでコードを作成

「拡張機能」→「Apps Script」

◎コードはchatGPTに書いてもらいました!

function playVideo() {
  var videoFileId = "1EWek-l4wToMym3LPkm6OYPNZLAQYkoj8";
  var videoFileUrl 動画のURL= "f" + videoFileId + "&autoplay=1";
  var html = '<iframe src="' + videoFileUrl + '&autoplay=1" frameborder="0" allowfullscreen width="640" height="360"><\/iframe>';
  var userInterface = HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Play Video');

動画のサイズについては、4行目の「width」「height」で調整します!


実際には、
「スプレッドシートにボタンを挿入し、そのボタンを押すとURLが開かれるようにするには、どのようなスクリプトを書いたらいいですか?」

と聞いてみたところ、コードを教えてくれたのですが、1回では思い通りのコードが出ないため、実行結果とどうしたいかを何度か伝えて、やっと上記のコードが出てきました。


chatGPTを使えばプログラミングも助かりますね!
早く今年度中にアプリを開発したいと思います!


この記事が気に入ったらサポートをしてみませんか?