セルの内容変化で、GAS起動、答え合わせ

GASで足し算問題

Google Sheetはグーグルのサービスで、ブラウザ上で表計算を利用することができます。
VBAのようなスクリプト言語「GAS」があります。GASでシートを操作することできます。

sheetだけでなく、googleの他のサービスと連携も得意のようです。できるかどうか私にはわかりませんが、LineとかTwitterとも連携ができそうです。

セルにランダムな値を入れる

function myFunction() {
  const sheet=SpreadsheetApp.getActiveSheet();
  sheet.getRange('A2').setValue(23);
  sheet.getRange(3,2).setValue(100);
}

まず、シートを特定しないとだめです。

getRange = セルの番地

セルにランダムな数

function rndN(){
  n=Math.floor(Math.random()*100+1);
  return n;
}

Javascriptと同じ、100までの乱数を作る

setValue(‘=’) エラーになる

うまくいかないので、=全角にした。

セルの値を消す

sheet.getRange('E2').clearContent();

clearContent()で消えます。ただし、入力の途中はだめ

数値入れたら、スクリプト発動

=の次のセルに合計値入れたら、正解かどうか判定させたい。

4+6=??

変更されたセルの番地を取得

function onEdit(e){
  Browser.msgBox(e.range.getRow()+" // "+e.range.getColumn());  //行・列番号
}

メッセージボックスは:

Browserが必要、msgBox Bは大文字

特定セルの監視

function onEdit(e){
 //編集されたセルの行数を取得
  let row = e.range.getRow();
  //編集されたセルの列数を取得
  let col = e.range.getColumn();

//編集されたセルが指定セルだったら実行
  if(row == 2 && col == 5){
    Browser.msgBox("ok");
  }
}

足し算の答え入れ、あっているかチェックする

function onEdit(e){
  const sheet=SpreadsheetApp.getActiveSheet();
  a=sheet.getRange('A2').getValue();
  b=sheet.getRange('C2').getValue();
  c=a+b;
 //編集されたセルの行数を取得
  let row = e.range.getRow();
  //編集されたセルの列数を取得
  let col = e.range.getColumn();

//編集されたセルが指定セルだったら実行
  if(row == 2 && col == 5){
    if(c==sheet.getRange('E2').getValue()){
      Browser.msgBox('正解!');
    }else{
      Browser.msgBox('だめ'+(a+b));
    }
  }
}

セルの値が変更になったら、スクリプトが動く。

セルをアクティブにする

sheet.getRange('E2').activate();

コメント

タイトルとURLをコピーしました