連日GASの話でスマンが、今日もGASの話である。
~~~~~
慣れないGASを触っては試行錯誤を繰り返し、全然うまくいかなかったとき。
あ~楽にVBAをGAS化してぇ~(^o^)
そう思うってもんだ。
これはとても単純なVBA、
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target.Row > 3 And Target = "" Then
Target = "電話番号入力"
End If
End Sub
Sheet1のC列4行以降が空白になった瞬間、その空白になったセルに"電話番号入力"と自動で入力されるだけのコードである。
※ちなみに上記は範囲選択してDeleteしたらバグる。
つまりこんな感じ↓
用途としては、電話番号入力漏れ防止、だな。入力しろよ、と催促しつつ、入力されずただの空欄にされたときには、電話番号入力しろよと再度しつこく促す、といった意味で…
なんでこんなことしているかと言うと、我が課のメンバーの年齢層が高めなためだ。ここまでせんと漏れるんよマジで。
んで、これは本来スプレッドシートで離れた店と見やすいように共有しているデータ(社内ポータル用であるGoogleのSiteに埋め込んでいる)なため、VBAではなくGASでこの動きを可能にしたいのである。
だが、結果全然書けず、もうなんやねんコイツと思っていた頃。
※VBAぐらい人間の言葉で書かせてもらいたいんだが、そうはいかんので初心者にはしんどい。相性悪すぎて今まで学んだことを応用しているつもりでも全然できないしな。
ハッとして思いついたのだ。
コンバーターとかあるんじゃないの!?!!?
と。
そして、さっそく検索である。
するとあるじゃないか!!!
しかも公式で!!!!
Macro Converter - Google Workspace Marketplace
あるのは素晴らしいことだが、ドケチなことに、GoogleWorkspaceのいいプラン利用者限定でしか使えないらしい(Google Workspace Enterprise PlusとG-Suite Enterprise for Education)。
だが、うちの会社結構デカいし、そこそこいいプラン加入してるんじゃね?
と思い、試してみたところ。
なんと使えるじゃないか!!さすがだぜ!!!
まあさっそく使ってみた感じはこれ↓
コンバートすると、
こんな感じでフォルダが作られ、
フォルダの中には、
こういったドキュメントファイルと一緒にGAS入りスプレッドシートがある。
で、さっそくファイルを開き、スクリプトがどんな感じになっているか確認をしてみたところ…
ひとつ、
ふたつ、
みっつ、
よっつ、
ヤバすぎだろ!!たったあれだけのコードのためにこんなに色々書き出されるの!?!??
なんか怖いんだが!!
Libraryとか作られているあたりでなんとなくわかるが、
だからってLibraryがあんな長文である必要はあるのか疑問である。絶対不要部分あるやろと、じっと見つめてみるもどこ消していいか全然わからん。
というわけで、なんとなく試しにLibraryまるごと消してみた。
当然のように動かなかった。
そりゃそうだな。4つセットなんだから。
にしても、
あんな単純なコードのためにこんな大がかりなことをして、さらに動作が重くなったりしてしまうんじゃなかろうか。
普通ならわざわざAPI使うまでも無いはずの動きである。
これはコンバーターなんかに頼らず、しっかり自分で書いた方がよさそうだ。
そんなわけで我輩はこれの使用をひとまずやめた。
コンバート後のスプレッドシートともおさらばした。
せっかく会社の恩恵(お高めの有料プラン)に与ったアドオンであるが、もっと長いVBAコードをGASに変換する必要が出てきたとき、本気で自力じゃ絶対無理となったときに、いつか使おうと思う(今も一応自力で出来てはいないが必須ではないのでひとまず諦めた。また気が向いたら挑戦する)。
余談だが、もし非対応プランでMacroConverterを使おうとすると…
こうなる。