まとめ
自宅の家電の各種消耗品の交換日が来たらそのことを自分にリマインドするという仕組みを、なるべく1枚の表に収める形で作りたい。Googleスプレッドシートで消耗品のリストを作り、そこに交換周期(年)と最後に交換した日を記入して、Goole Apps Script により次の交換日が来たら電子メールで通知する、というのができた。
やりたいこと
家電にはたいてい消耗品のパーツがあり、定期的にそれらを交換しなくてはならない。しかし、パーツごとにしっかりと覚えておくのはちょっと難しい。カレンダー機能やToDo機能を使うこともできるが、それだと消耗品の種類が増えるにつれて煩雑になってしまう。
そこで、なるべく1枚の表だけを用いて、自宅の家電の各種消耗品の交換日が来たらそのことを自分にリマインドするという仕組みを作りたい。
やったこと
Googleスプレッドシートに消耗品ごとに交換サイクル(年)と最終交換日を記入し、そこに紐づくApps Script を使い、次の交換日になったら自分にメールを出して通知する、という仕組みを作ってみた。
作った手順
Googleスプレッドシートを新規作成
以下のような列を主に含む表を作成してテーブル化した。
| 列名 | 説明 |
| 家電本体の名称など | |
| 消耗品の名称など | |
| 交換頻度(○年に1回) | 整数 |
| 最終交換日 | 日付形式 |
| 次の交換予定日 | 以下のような関数にする。
=DATE(YEAR(「最終交換日」のセルを参照) + 「交換頻度(○年に1回)」のセルを参照,MONTH(「最終交換日」のセルを参照),DAY(「最終交換日」のセルを参照)) |
| メール通知ステータス | スクリプトによりメールが送信されたら自動的に「完了」と入力されるところ |
Google Apps Script に入れるコードの下地を作成
Google Apps Script に入れるコードの下地は生成AIに作ってもらった。
その時のプロンプトは以下の通り。
生成されたコードの内容は自分の目でも確認した。
そのコードは、メールを送ったら「完了」という文字列を該当行のそれ用の列に入力することにより完了フラグを立てるという動作も行うような内容だった。これは、もし同日に2回目のチェックが走っても同じメールが2回以上飛ばないため、という配慮らしい。
宛先メールアドレスは行ごとに選べず常に1つだけ、という形態。
上記コード内のシート名、列の番号などは、先に作成してあった Googleスプレッドシートファイルに合わせて手動で直した。
コード内における宛先メールアドレスの部分も実際に宛先にしたい物に直した。
Googleスプレッドシートのメニューバー —>[拡張機能]—>[Apps Script]を開く。
“コード.gs” に、上記のコードを貼り付けた。
うまく動かないところは[デバッグ]して手動で直した。
自動実行(トリガー)の設定
このスクリプトを毎日自動で実行するように、以下の手順でトリガーを設定した。
Apps Script エディタの左側にある時計アイコン(トリガー)をクリックし、右下の「+ トリガーを追加」ボタンをクリック。
設定を以下にしてから、[保存]した。
- 実行する関数を選択: sendDailyNotificationEmails
- イベントのソースを選択: 時間主導型
- 時間ベースのトリガーのタイプを選択: 日付ベースのタイマー
- 時刻を選択: 午後 10時〜11時
結果
テストとして、Googleスプレッドシートに作った表のうちテストとして使う行の列「次の交換予定日」が今日の日付になるような日付を列「最終交換日」に入力して保存し、その日の午後 10~11時頃に実際に電子メールが指定しておいた宛先に来るかどうかを確かめてみた。すると、午後 10:25 頃にそのメールが無事に届いた。
また、メールが送信された行には列「メール通知ステータス」に「完了」と入力された。
今のところ、1年単位の交換周期にのみ対応している。
今後の運用
交換すべき消耗品の種類が増える度に、この表にその行を追加していくことになる。
そしてこのメールが届く度に、その消耗品を交換することになる。
実際に消耗品を交換したら、列「最終交換日」にその日付を入力するとともに、列「メール通知ステータス」の「完了」文字を消す。
所感
これで、自宅において家電の消耗品の交換を忘れずに行えそうだ(*’▽’)
今後も正常に動作し続けてくれることを願う。


