さぁ、それではプラスボタンで出来なかった計算そのものをイコールボタンでやっていきましょう。
まずは作業の単純化と、言語化ですね。
と、ここで詰まってしまった方は多いのではないでしょうか。
そういう時はマイルストンです。
やりたいことだけを見つめていても出来ないこともあります。
途中に目標点を置くことで、ゴールまで進めるようになります。
てことで、矛盾はしますがとりあえずプラスボタン以外のことは忘れて、足し算だけを実現しましょう。
画面に表示されている今の数字=A2セルの値
これと、
プラスボタンを押した時に一時記憶された数字=C2セルのストック値
を足した結果をA2セルに表示。
そして、B2セルはどうしましょう?
ロックする必要があるのかどうか。
ボタンを押した後で、数字を押したときにされるアクションは・・・。
続きに数字が出てたらおかしいから、ロックが正しいですね。
ということでB2セルは1にしましょう。
C2セルは、どうしましょう?
一回押しただけなら、どっちでもいい気がしますが、2回押して2度同じ処理をさせるのかどうか。
電卓の種類によっては、ありそうですがイコールを押したんだからクリアされていい気がしますね。
ということでC2セルはnull値にしときましょう。
D2セルは?
これもnull値でいいですね。
さぁ、コードにしましょう。
function button_equal() {
if ((A2 != null && A2 != “” && A2 != 0 )){
var i = A2+C2;
sheet.getRange(“A2”).setValue(i);
sheet.getRange(“B2”).setValue(1);
sheet.getRange(“C2”).setValue(null);
sheet.getRange(“D2”).setValue(null);
} else {
}
}
どうでしょう?
足し算だけはとりあえず出来ましたか?
さぁ、ここからが問題ですね。
足し算以外だった時を想定して、足し算のテストをする・・・。
まずはIF文でやってみましょうか。
もしも足し算だったら
足し算をする
足し算ではなく、引き算だったら
引き算をする
どちらでもなく、掛け算だったら
掛け算をする
どれでもなく、割り算だったら
割り算をする
どれでも無かったら、エラーを返す。もしくは無視する。
こんな感じですかね。
コードが長くなるので省略しますが、気になる方は試してみましょう。
コードを短くするなら、やっぱりswitch case文ですかね。
D2セルが
+なら足し算
-なら引き算
*なら掛け算
/なら割り算
まとまった感じしますね。
では、これをさっきのコードに足してこんな感じにしましょう。
function button_equal() {
if ((A2 != null && A2 != “” && A2 != 0 )){
switch (D2) {
case “+”:
var i = A2+C2;
break;
case “-“:
var i = C2-A2;
break;
case “*”:
var i = A2*C2;
break;
case “/”:
var i = A2/C2;
break;
default:
var i = A2;
break;
}
sheet.getRange(“A2”).setValue(i);
sheet.getRange(“B2”).setValue(1);
sheet.getRange(“C2”).setValue(null);
sheet.getRange(“D2”).setValue(null);
} else {
}
}
多少長くなりましたが、それなりにまとまったのではないでしょうか。
ということは、次の章のマイナスボタン達のコードは決まってきましたね。
もう次の章はいらないんじゃないかな・・・。
だって、プラスボタンのD2セルに入れる値を変えればいいだけでしょ?
ここまでついてきた皆さんには簡単すぎますよね?
コメント