【GAS】スプレッドシートにカウントボタンを設置する方法

GAS -GoogleAppsScript-

どうも〜なるです!

最近、ECサイトとかアプリを一から作ること自体はいいけど、コスパとかセキュリティ的にも大型のプラットフォームやフレームワークを使った方が良いのでは??って考えてます。

なので、Googleのスプレッドシートを活用することにしましたが。。

 

例えば

“ボタンを押したら回数が1増える機能”
をググったんですけど乗ってなかったり、セル無視のボタン描いてのっけたりと
まだ最新なので情報は足りないようです。
頑張って〜デベロッパー!!
あ、仕事に繋がるので自分で作ります。
完成はこんな感じ

ちゃんとモーダルで知らせてくれます。

GoogleSpreadSheetでチェックボタンを設置する

挿入から設置するだけ

これはコード知識いらないです。

SpreadSheet checkbox

 

挿入にあるのでそのままクリックで設置。

エクセルみたいに選択してから下に伸ばせば複数まとめて設置できるのでやって、どうぞ。

どこでもいいけど、となりに0

後々説明しますけど、数はプログラムの方で場所を制御するのでなんでもいいです。

注意するのは半角で「0」と打つこと。0はダメです。🙅‍♂️認識してくれません。

 

Drag and 0

 

GoogleAppsScriptで制御する

[ツール]からスクリプトを選んで開始

スプレッドシートの[ツール]タブから[スクリプトエディタ]を起動します。
だいたいはJavaScriptsの文法で書けるので慣れれば楽ですよ!

ただ、スクリプトが作動する瞬間はコードじゃなく、ボタンで選ばないといけません。

適当に名前を書いてからセーブして、エディタ内の[編集]→[現在のプロジェクトのトリガー]をクリック。

トリガーを追加のボタンから設定をいじります。

今回は、ボタンを押すと1増える機能なのでトリガーの作動するタイミングを「変更時」にしときます。

これで事前準備は完了です。

ここからスクリプトを書いていきます。

 

こちらがコードになります。

もうコピペで済ませたい人はこれをコピーしてのっけてしまってください。

現在開いているシート、セルを起動

 

基本ではあるんですけど、どのシートを使うかあらかじめ書いてないと動きません。
シート名を書く方法もあるんですけど、誰でも使えるようにアクティブなシートのアクティブなセルを選ばせるようにしました。

ついでに co は0の場所のことで、offset(下, 右);のように自由に設定できます。
変更させる場所がいつもチェックボックスの右になるように(0, 1)と指定しました。

場所を選んだだけではデータを使えない

このまま進めてはセルの中の情報を使えないので、getValue()関数を使って、さらに別の変数の中に入れてしまいます。

このあと出てくるけど、値を読むのがgetValue()で書き換えるのがsetValue()です。
セットで覚えときましょう。

if文でチェックボックスを指定

仕組みとしてチェックボックスが押された時、Boolean型で[true]になるので
trueになったらカウントしてfalseに戻しちゃえば繰り返し使えますよね。

あと、余計なところで作動されないように列も指定しちゃいましょう。

 

getColumn()関数でアクティブなセルの列を取得して、チェックボックスはTrueですよっと。

 

あとは簡単。

0だった値に1足したものを作って代入。
ついでに今、何回目か教えてくれたらいいね。

あ、忘れちゃいけない。
チェックボックスを元に戻さなきゃ!

 

これで大丈夫。

 

デメリット

スマートフォンではトリガーが起動しない

これはGoogleがまだ未熟ということなのか、それともスマホを考慮してないのかわかりませんが
スマホアプリでチェックボックスを押しても作動しません。

まぁ、もともとみにくいのでいいですけど。。

ビックデータには対応できない

GoogleAppsScript自体誰でもできて簡単なため、アクセス制限があるみたいです。
なので何百回も1日で処理してたら動かないです。

微弱点:まとめてカウント機能はこのままじゃできない

スクリプトを見直せばできるんですが、現在は[アクティブなチェックボックス]が押された時にカウントされるので
この人とこの人と・・・みたいにまとめてポチッとできません。

処理が若干遅い感じがあるので、まとめて押す機能or00:00に値を変更する機能も標準しておいたらいいかもですね。

GAS -GoogleAppsScript-
スポンサーリンク
シェアする
nullをフォローする
なるのプログラミング備忘録

コメント