EXCEL VBA → GAS への作り変え
EXCEL VBAは次のデータの読み取り用に新しいダイアログをすぐ再表示してくれていたので
GASでも同じ動きにしたい
●ダイアログにバーコードデーターを次々に読み込ませたい
●バーコードリーダー以外は触りたくない
※バーコードリーダーはデータ読み取り+エンターの動きをやってくれる
1つ目の壁 マウスで「OK」ボタンをクリックしないと次の入力が出来ない
今回、GASで作り直したら、ダイアログは「OK」ボタンをマウスでクリックしないと
次のデータを読み込めないという壁にぶつかりました。
サイドバーであればINPUTにデータが入ったら自動的にOKボタンを押すのと同じ動きをしてくれるという記事見つけたので、サイドバーに作り直してみました。
参考文献
サイドメニューであればエンター効果があるという記載はこちらから入手
GASのサイドメニューのコードや設置の仕方はこちらを参考にさせて頂きました。
2つ目の壁 サイドバーにしたけどマウスで「OK」ボタンをクリックしないと次の入力が出来ない
こちらの2つの記事を読んだ結果、おそらくこれが原因だろうと思ったので、
INPUTに入力してエンター押すとSUBMITするように書き直せばいいのだろうと予想
formタグを追加してonsubmit= の記述を追加、
ボタンはに書き直しました。
入力+エンターでプログラムが動くようになりました。
3つ目の壁 次の入力をしたいのに入力箇所にカーソルが当たっていない!
具体的には前の入力データが残ってしまってるのと、入力のカーソルがINPUTに当たっていないので、マウスでカーソルを移動しないと次の入力が出来ない
カーソルが当たるようにするのはこちらを参考にしました。
4つ目の壁 入力エリアの文字が小さすぎて見にくい!!
style="font-size:50px; を足しました。
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<form method="post" action="" onsubmit="return convert()" id="form1">
<input type="text" id="message" value="" style="font-size:50px;" size="5"/>
<input type="submit" value="送信">
</form>
</div>
<script>
function convert() {
const message = document.getElementById('message');
console.log(message.value);
google.script.run.execute(message.value);
message.value = ""
document.getElementById('message').focus();
}
</script>
<script type="text/javascript">
document.getElementById('message').focus();
</script>
</body>
</html>
一応使えそうなレベルにはなったけども・・・
超高速で読み取ると、まだスプレッドシートへの書き込み処理が終わっていないのに、入力エリアがスタンバイになってしまう。
処理が終わっていない状態で次を読み込んでも多少は大丈夫そうなのだが、
1,2,3,4,5 と入れていくと 1,2,3,4 とか 1,3,4,5 とか時々飛んでしまうので、
そのうち少し直したい