Googleのスプレッドシートのことをもう少し深堀りして見ようと思って、試しに野球のBSOを作ってみた。
野球に馴染みのない人にはピンとこないかもしれない。
ボール、ストライク、アウトを表示するあれです。
Contents
VBAと同じようなものと思いきや、ほぼほぼJava Script
これを作る前に、エクセルで同じようなものを作ってみた。
それをちょっといじってSpread Sheetに入れるくらいのつもりで始めた。
書き方はJava Scriptそのもの。
Sheetとかセルの指定で少し独自の書き方があるだけ。
まぁ書き方は人それぞれいろいろあるでしょうが・・・
とりあえずはこれで。
矢印のボタンにスクリクプとを割り当ててあって、C列の●が増えたり減ったりする仕掛け。
右側はクリアボタン。
function BallPlus() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange(‘C4’);
var Ball = range.getValue()
switch(true){
case Ball ==”●”:
sheet.getRange(‘C4’).setValue(“●●”);
break
case Ball==”●●”:
sheet.getRange(‘C4’).setValue(“●●●”);
break
case Ball==”●●●”:
sheet.getRange(‘C4’).setValue(“●●●”);
break
default:
sheet.getRange(‘C4’).setValue(“●”);
break
}
}
function BallMinus() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange(‘C4’);
var Ball = range.getValue()
switch(true){
case Ball ==”●●●”:
sheet.getRange(‘C4’).setValue(“●●”);
break
case Ball==”●●”:
sheet.getRange(‘C4’).setValue(“●”);
break
case Ball==”●”:
sheet.getRange(‘C4’).setValue(“”);
break
default:
sheet.getRange(‘C4’).setValue(“”);
break
}
}
function StrikePlus() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange(‘C5’);
var Strike = range.getValue()
switch(true){
case Strike ==”●”:
sheet.getRange(‘C5’).setValue(“●●”);
break
case Strike==”●●”:
sheet.getRange(‘C5’).setValue(“●●”);
break
default:
sheet.getRange(‘C5’).setValue(“●”);
break
}
}
function StrikeMinus() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange(‘C5’);
var Strike = range.getValue()
switch(true){
case Strike ==”●●”:
sheet.getRange(‘C5’).setValue(“●”);
break
case Strike==”●”:
sheet.getRange(‘C5’).setValue(“”);
break
default:
sheet.getRange(‘C5’).setValue(“”);
break
}
}
function OutPlus() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange(‘C6’);
var Out = range.getValue()
switch(true){
case Out ==”●”:
sheet.getRange(‘C6’).setValue(“●●”);
break
case Out==”●●”:
sheet.getRange(‘C6’).setValue(“●●”);
break
default:
sheet.getRange(‘C6’).setValue(“●”);
break
}
}
function OutMinus() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange(‘C6’);
var Out = range.getValue()
switch(true){
case Out==”●●”:
sheet.getRange(‘C6’).setValue(“●”);
break
case Out==”●”:
sheet.getRange(‘C6’).setValue(“”);
break
default:
sheet.getRange(‘C6’).setValue(“”);
break
}
}
function BallClear() {
const sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(‘C4’).setValue(“”);
}
function StrikeClear() {
const sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(‘C5’).setValue(“”);
}
function OutClear() {
const sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(‘C6’).setValue(“”);
}
function BSClear() {
const sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(‘C4’).setValue(“”);
sheet.getRange(‘C5’).setValue(“”);
}
function AllClear() {
const sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(‘C4’).setValue(“”);
sheet.getRange(‘C5’).setValue(“”);
sheet.getRange(‘C6’).setValue(“”);
}
スクリプトエディタからスタート
最初、どこから何をやったらいいかまったくちんぷんかんぷんのところから始めた。
エクセルで言うところのVisual Basic Editerがこのスクリプトエディタにあたり、ツールのタブから選択できる。
あとはエクセル同様、図形の挿入でボタンを作って割り当てるだけ。
図形の挿入はエクセルよりちょっと手間かな。
挿入のタブから図形描画を選択してからの図形選択。
スクリプトの割り当ては簡単
ボタンを作ってスクリプトを割り当て
図形でボタンをつくってマクロを登録します。
- BallPlus
- BallMinus
- StrikePlus
- StrikeMinus
- OutPlus
- OutMinus
- ClearBS
- ClearAll
右クリで図形を選択したら「・」が3つ並んだやつをクリック
最初に割り当てるときは普通に左クリックでも右クリックでも図形の選択はできる。
でも、一度割り当てたボタンの割り当てを変える場合は右クリ。(普通にクリックすると実行しちゃうので。)
ここに、Functionの名前を入れる。
()は入れない。
作っては見たものの
スマホのアプリでは動かないんだよね。
まぁ、これは練習ということで。
コメント
[…] 前回のSpread Sheet(Google Apps Script)でのBSO作成に引き続き、VBAで同じものを作ってみた。 […]