はじめに
「あ、今日燃えるゴミの日だった……」
ゴミ収集車が去った後に気づく、誰もが経験したことがあるのではないでしょうか。
今回は、そんな失敗を繰り返さないために、Google Apps Script(GAS)を使ったシンプルなゴミ出しリマインダーを自動化してみました。
完成イメージ
ゴミの日に自分のGmailに通知が届きます。
僕の場合は以下のように通知が届きます。
| 曜日 | 通知内容 |
|---|---|
| 月・木 | 燃えるゴミの日 |
| 火 | ペットボトル・缶の日 |
環境・前提条件
- Googleアカウント(無料)
- Gmail(送受信に使用)
- Google Apps Script(無料)
- プログラミングの基礎知識(あると望ましいが、コピペでもOK)
コード
function Rubbish() {
const now = new Date();
const day = now.getDay(); // 0:日, 1:月, 2:火, 3:水, 4:木, 5:金, 6:土
const to = '自分のメールアドレス@gmail.com'; // ← ここを書き換える
let subject = '';
let body = '';
if (day === 1 || day === 4) { // 月曜日または木曜日
subject = '燃えるゴミの日';
body = '今日は燃えるゴミの日です。忘れずに出しましょう!';
} else if (day === 2) { // 火曜日
subject = 'ペットボトル・缶の日';
body = 'ペットボトルと缶のゴミを出しましょう!';
} else {
return; // ゴミの日ではない → 何もしない
}
GmailApp.sendEmail(to, subject, body);
}
コードの解説
new Date().getDay() で今日の曜日を数値で取得します。
| 戻り値 | 曜日 |
|---|---|
| 0 | 日曜日 |
| 1 | 月曜日 |
| 2 | 火曜日 |
| 3 | 水曜日 |
| 4 | 木曜日 |
| 5 | 金曜日 |
| 6 | 土曜日 |
ゴミの日に該当する曜日であれば GmailApp.sendEmail() でメールを送信し、該当しない日は return で何もせず終了します。
注意: ゴミ収集日は地域によって異なります。お住まいの自治体のスケジュールに合わせて
ifの条件を書き換えてください。
セットアップ手順
1. Google Apps Scriptを開く
https://script.google.com にアクセスし、「新しいプロジェクト」をクリックします。
2. コードを貼り付ける
デフォルトで表示されている function myFunction() {} を削除し、上記のコードを貼り付けます。
'自分のメールアドレス@gmail.com' の部分を自分のGmailアドレスに書き換えてください。
3. 動作確認
メニューから実行したい関数として Rubbish を選択し、「▶ 実行」ボタンを押します。
初回実行時はGmailへのアクセス許可を求めるダイアログが表示されます。「許可」をクリックしてください。
ゴミの日に該当する曜日であれば、メールが届いていることを確認します。
4. トリガーを設定する
毎日自動で動くようにトリガーを設定します。
- 左サイドバーの時計アイコン「トリガー」をクリック
- 右下の「トリガーを追加」をクリック
- 以下のように設定する
| 項目 | 設定値 |
|---|---|
| 実行する関数 | Rubbish |
| イベントのソース | 時間主導型 |
| 時間ベースのトリガーのタイプ | 日付ベースのタイマー |
| 時刻 | ゴミ出し前に届く時間 |
- 「保存」をクリック
これで毎朝指定した時間帯にスクリプトが自動実行されます。ゴミの日以外は何も起こりません。
カスタマイズ例
複数の種類に対応する
function Rubbish() {
const now = new Date();
const day = now.getDay();
const to = '自分のメールアドレス@gmail.com';
const schedule = {
1: { subject: '🔥 燃えるゴミの日', body: '燃えるゴミを出しましょう!' },
3: { subject: '🔥 燃えるゴミの日', body: '燃えるゴミを出しましょう!' },
2: { subject: '♻️ ペットボトル・缶の日', body: 'ペットボトルと缶を出しましょう!' },
4: { subject: '📦 段ボール・古紙の日', body: '段ボールと古紙を束ねて出しましょう!' },
};
if (schedule[day]) {
GmailApp.sendEmail(to, schedule[day].subject, schedule[day].body);
}
}
オブジェクトでスケジュールを管理することで、種類が増えるがシンプルになります。
第◯週のみに対応する(隔週・月1回)
資源ごみなど「第2・第4火曜日のみ」といった収集日にも対応できます。
function getWeekOfMonth(date) {
const firstDay = new Date(date.getFullYear(), date.getMonth(), 1).getDay();
return Math.ceil((date.getDate() + firstDay) / 7);
}
function Rubbish() {
const now = new Date();
const day = now.getDay();
const week = getWeekOfMonth(now);
const to = '自分のメールアドレス@gmail.com';
// 第2・第4火曜日:資源ごみ
if (day === 2 && (week === 2 || week === 4)) {
GmailApp.sendEmail(to, '♻️ 資源ごみの日', '今日は資源ごみの日です!');
}
}
注意点・ハマりどころ
GASのタイムゾーン設定
GASのデフォルトタイムゾーンがアメリカになっている場合、日本時間とズレてゴミの日判定がおかしくなることがあります。
「プロジェクトの設定」→「タイムゾーン」を Asia/Tokyo に変更してください。
メールが迷惑メールに入る場合
自分のGmailアドレスから自分に送っているため、通常は迷惑メールに振り分けられません。もし入った場合は「迷惑メールではない」と設定してください。(ここ以外とハマりどころです)
まとめ
GASを使えば、わずか数十行のコードで実用的なゴミ出しリマインダーが作れます。
- 無料
- サーバー不要
- 一度設定すれば全自動
- 地域のルールに合わせてカスタマイズ可能
「ゴミ出しを忘れがち」という地味な悩みをコードで解決するのは、プログラミングの楽しさでもあると再認識できました!ぜひ自分の収集スケジュールに合わせてアレンジしてみてください!