1/29/2024

Apps Script

今住んでいるところは、寮ではないが会社の借り上げマンションで最初からそういう目的のために建てられていて食堂のスペースがあり、ここで平日のみ朝晩の食事が出される。

ルールとしては喫食するかどうかを記入する表があり、前週の木曜日までにメニューを見て喫食する日の朝晩の欄に〇を記入しておくというものだ。

これらはすべて手書きで直接この表を見るしか記入したかどうかを確認するすべがない。最大で3週間先までの記入をするので自分がどういう記入をしたかを忘れてしまっていることが多々ある。

もう一つの問題点として、メニューによって例えば揚げ物なら自分の使っているソースを冷ややっこなら醬油を食堂に持って行って使いたいというのがある。しかし、食堂までいかないとメニューも確認できないので食堂に行って気づくということが何度もあった。

メニュー表は掲示されているので、それをスマホで撮っておいて食堂に行く前にそれを見れば一応確認はできる。が、いちいち写真フォルダを確認したり、拡大したりするのも面倒くさい。

いまのスマホは文字認識ができるので撮影さえすれば簡単に文字起こしはできる。文字起こししたテキストをgoogleのスプレッドシートに保存しておけばテキストとして確認できるので画像を見るよりは見やすい。

ここまでやってみて、どうせならこのメニューを自動でメール送信するようにできないだろうかと思った。

こんな仕組みだ。

以下のようなスプレッドシードの表がある。

A B C D E F G

2024/01/29 コロッケ&豚カツ 切干大根煮 インゲンのなめ茸和え 味噌汁 白ごはん 〇 

2024/01/30 えび団子の炒め物 かぼちゃと豚肉の煮物 カリーフラワの和え物 味噌汁 白ごはん

A列には年月日が入っているのでシステム日付と照合して当日の行のC列からG列の各セルの内容を取得する。C列からF列はメニューの詳細でG列が〇ならば喫食する記入をしたもので何も入っていなければ喫食しない日となる。G列に〇が入っているとその日のメニュー(C列からF列の内容)をメールの本文に書き込み、〇がない場合は「今日の夕食はありません」という本文を書き込む。これを毎日17時にメール送信する。

こういう仕組みを実現したいと思い調べてみると、Apps Scriptで実装できそうだった。

ここからが少し面白いのだが、今どきこれを一から書くのはバカバカしいので、googleのことはgoogleに訊くのがいいだろうと思いgoogleのAIであるBardにこのプログラムを書かせてみた。一応それらしいものができてきたので貼り付けて実行してみたが動かない。まあ多少の手直しは必要だろうといろいろ調べて手を入れてみたが、なかなかうまくいかない。あまりにもダメダメなので、ではEdgeのCopilot(実体はOpenAIのGPT-4)だとどうだろうと思い、Bardに入力したのとほぼ同じプロンプトを入力してみると、かなり出来がよさそうなものが返ってきた。実際これを貼り付けて動かしてみると一発目は同じくダメだったがごく簡単なエラーだったのですぐ直して2回目にはすんなり動いた。しかも、Copilotはただコードを吐き出すだけでなく、毎日17時にメール送信をするためのApps Scriptのトリガー設定の仕方まで丁寧に教えてくれた(ちなみにBardはプログラム内で定期的に動かすようにするというダサいコードだった)。

CopilotはMicrosoftのPowerShellでもそこそこ役に立つコードを書いてくれるが、googleのApps Script(ほぼJavaScript)でも役に立つことがわかった。というかBardがダメだといわれているのがよくわかった。

0 件のコメント: