GAS初心者がQRコード出欠管理システムを作ってみた

*PC初心者が試行錯誤した備忘録なので、ご意見もいただければと思います!

【やりたいこと】

生徒の人数が多くて出欠をとるのが大変…!

    ⇩

生徒が配布されたQRコードを、教卓の上のタブレットにかざすと、自動でエクセルに出席が登録されるようにできないか

【使うもの】

・Googleスプレッドシート

・タブレット(QRコード読み取り機能つき)

準備 スプレッドシートを用意し、GASを開く


「拡張機能」のタグ → 「Apps Script」に入る

Try① シートに自動で文字(“出”)が入力されるようにする


function doGet(e) {

  var spreadSheet = SpreadsheetApp.openByUrl(‘ ① ’);

  var ss = SpreadsheetApp.getActiveSpreadsheet()

  var sheet = ss.getSheetByName(“ ② ”)

  sheet.getRange(‘ ③ ’).setValue(‘ ④ ’);

}

①シートのurl・②シート名を入力


③入力したい場所・④入力ワード


D列の5行目に「出席」と入力したい

    ↓①~④を入力すると


      ↓「実行」を押すと


       ↓「権限を承認」を押す


このように自動的に入力されています!

【課題】

・毎回D5のセル(「1/1」の下)にしか入力できない!

  ↓

・毎回入力するセルを自動で移動させられないか?


Try② 自動で行の最後を取得して入力する

function doGet(e) {

  var spreadSheet = SpreadsheetApp.openByUrl(‘https://docs.google.com/spreadsheets/d/16_DoMqggTanaG0aJYyErr4BdWCkmTTH7R5oCc6KDd4E/edit#gid=0’);

  var ss = SpreadsheetApp.getActiveSpreadsheet()

  var sheet = ss.getSheetByName(“あ”)

  var lastColumn = sheet.getRange(1,1).getNextDataCell(SpreadsheetApp.Direction.NEXT).getColumn()

  for(var i=lastColumn;i>=2;i–){

    var range = sheet.getRange(5,i); 

    sheet.getRange(5,i).setValue(“出”)

  break;

}

}

*Column=列 Row=行

       ↓実行


そこじゃない・・・!


Try③ 入力してある次の行を取得して入力する


function doGet(e) {

  var spreadSheet = SpreadsheetApp.openByUrl(‘https://docs.google.com/spreadsheets/d/16_DoMqggTanaG0aJYyErr4BdWCkmTTH7R5oCc6KDd4E/edit#gid=0’);

  var ss = SpreadsheetApp.getActiveSpreadsheet()

  var sheet = ss.getSheetByName(“あ”)

  var lastColumn = sheet.getLastColumn()// 最後の列を取得

  for(var i=lastColumn;i>=2;i–){

    var range = sheet.getRange(5,i);  // 取得する範囲を取得

    var j = i + 1;

    sheet.getRange(5,j).setValue(“出席”)

  break;

}

}

      ↓実行!


        ↓もう一度、実行!


【課題】

入力してある列の次の行は取得しているけど…

・日付のところに入力してほしい…

   ↓

・入力してある“次”ではなく、入力してある行にすれば!


Try④ 完成!!(とりあえず…)

function doGet(e) {

  var spreadSheet = SpreadsheetApp.openByUrl(‘https://docs.google.com/spreadsheets/d/16_DoMqggTanaG0aJYyErr4BdWCkmTTH7R5oCc6KDd4E/edit#gid=0’);

  var ss = SpreadsheetApp.getActiveSpreadsheet()

  var sheet = ss.getSheetByName(“あ”)

   var lastColumn = sheet.getLastColumn()// 最後の列を取得

  for(var i=lastColumn;i>=2;i–){

    var range = sheet.getRange(5,i); // 取得する範囲を取得

    sheet.getRange(5,i).setValue(“出席”)

  break;

}

}

       ↓実行!


日付を入力してある下に、「出席」が入力される

【課題】

・毎日自分で日付を手入力で更新しておく必要がある

・6行目以降も1つ1つ作成していく必要がある


コピーして全員分を作成


     ↓コピーを作成で、行数だけ変更していく

URLの作成


「デプロイ」→「新しいデプロイ」

        ↓


        ↓「ウェブアプリ」


ひとまず、「Googleアカウントを持つ全員」にしました

       ↓「デプロイ」


urlをコピーして完了!


あとはurlをQRコード化できる以下のサイトを使ってQRコードを作成

     ↓

QRコードを印刷して配布


活用のために毎朝の準備

①シートの日付を更新しておく

②タブレットでシートを開いておく必要があります

③タブレットでQRコード読み取りカメラを起動


あとはタブレットを入口などにおいておけばOK!


まだまだ不完全ですが、さらに改良を重ねていきたいと思います!

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