g_spreadsheet:randomly_nominate
ランダムに指名
授業でランダムに指名するためのスプレッドシート。
Dispとtemporaryの2つのシートを作ります。temporaryは、一時的な書き込みをするものです。 [リセット][次][前]のボタンは、図形描画で作り、それぞれ[reset][go_next][go_previous]を割り当てます。
var total; var current; var num=[]; var flg=[]; let sheet = SpreadsheetApp.getActiveSpreadsheet(); let disp_sheet = sheet.getSheetByName('Disp'); let temp_sheet = sheet.getSheetByName('temporary'); function reset() { total=disp_sheet.getRange('C2').getValue(); current=0; for (i=1;i<total+2;i++) { flg[i]=false; } for(i=1;i<total+1;i++){ do { let rand = Math.random(); tnum = Math.floor(rand*total)+1; if (flg[tnum]==false) { flg[tnum]=true; num[i]=tnum; temp_sheet.getRange(i,1).setValue(tnum); break; } } while (true); } temp_sheet.getRange(total+1,1).setValue(null); disp_sheet.getRange('B4').setValue(null); disp_sheet.getRange('B14').setValue(0); disp_sheet.getRange('C14').setValue(total); } function go_next() { total=disp_sheet.getRange('C2').getValue(); current=disp_sheet.getRange('B14').getValue(); if(current<total) {current=current+1;} tnum=temp_sheet.getRange(current,1).getValue(); disp_sheet.getRange('B4').setValue(tnum); disp_sheet.getRange('B14').setValue(current); disp_sheet.getRange('C14').setValue(total-current); } function go_previous() { total=disp_sheet.getRange('C2').getValue(); current=disp_sheet.getRange('B14').getValue(); if(current>1) {current=current-1;} tnum=temp_sheet.getRange(current,1).getValue(); disp_sheet.getRange('B4').setValue(tnum); disp_sheet.getRange('B14').setValue(current); disp_sheet.getRange('C14').setValue(total-current); }
g_spreadsheet/randomly_nominate.txt · 最終更新: 2022/09/30 (外部編集)