本記事は 春のスキルアップ応援フェア2026 4/23付の記事です。 |
皆さんこんにちは!
気づいたらToDoの数がとんでもなく増えていきがち。 どうも、いとさんです。
実は、人間は「完了したこと」よりも「やり残していること」の方を強く覚えてしまうゼイガルニク効果という性質があるそうです。
リストが増えれば増えるほど、脳が勝手に「あれもやってない、これもやってない」と通知を出し続けている状態なんですね。バックグラウンドで常にタスクが動いているようなもので、これでは脳が休まる暇もありません。
参考・引用: 「中途半端に終わっているものほどよく覚えている『ゼイガルニク効果』とは」 引用:リクナビNEXTジャーナル
この「脳内のバックグラウンドプロセス」を終了させてスッキリさせるためには、まずは情報を頭の外に追い出すことが不可欠です。
さて今回は、
「飲みの場で決まった予定」や「やるべきこと」を、スマホからサッと入力して自分に通知したい。そんな願いを、GoogleフォームとGoogle Apps Script(GAS)だけで叶える個人開発に挑戦しました。
🛠 実装ステップ:自分専用ToDo通知Botの作り方
今回の開発は、大きく分けて3つのフェーズで進めます。
- 入力インターフェース(Googleフォーム)の作成
- プログラム(GAS)の実装
- 自動実行(トリガー)と権限の承認
ステップ1:入力インターフェース(Googleフォーム)の作成
まずはToDoを入力するための窓口を作ります。
-
Googleフォームを新規作成します。
-
以下の2つの質問を用意します。
-
「回答」タブを開き、「スプレッドシートに表示」をクリックして、回答保存用のシートを新規作成します。
ステップ2:プログラム(GAS)の実装
次に、データをメールに変換して飛ばす機能を実装します。
/**
* フォーム送信時に実行されるメイン関数
*/
function onFormSubmit(e) {
// 1. フォームの入力内容を受け取る
// 質問タイトルと一文字も違わないように注意!
const item = e.namedValues['ToDoの内容'] ? e.namedValues['ToDoの内容'][0] : "項目なし";
// 2. 期限のデータを取得し、文字化けを防ぐ処理
let deadline = "期限なし";
if (e.namedValues['期限'] && e.namedValues['期限'][0]) {
try {
// 日付を「yyyy/MM/dd」の形式に整形
const dateObj = new Date(e.namedValues['期限'][0]);
deadline = Utilities.formatDate(dateObj, "JST", "yyyy/MM/dd");
} catch (err) {
// 変換失敗時はそのままの文字を使用
deadline = String(e.namedValues['期限'][0]);
}
}
// 3. 送信先(自分のGmail)を設定
// ※ ここを自分のアドレスに書き換え
const recipient = 'your-email@gmail.com';
// 4. メールの内容を組み立てる
const subject = "✅【ToDo通知】" + item;
const body = `
━━━━━━━━━━━━━━━━━━
✅ 内容: ${item}
✅ 期限: ${deadline}
━━━━━━━━━━━━━━━━━━
※このメールはGoogle Apps Scriptから自動送信されています。
`;
// 5. GmailAppを使って送信
try {
GmailApp.sendEmail(recipient, subject, body);
console.log("送信成功!");
} catch(error) {
console.error("送信に失敗しました: " + error.toString());
}
}
ステップ3:自動実行(トリガー)と権限の承認
ここが一番の難所でした。
-
GASエディタ左側の 「時計アイコン(トリガー)」 をクリックします。
-
-
実行する関数:
onFormSubmit -
イベントのソース:「スプレッドシートから」
-
イベントの種類:「フォーム送信時」
-
これの意味が分からず永遠と安全なページに戻る(BACK TO SAFETY)を押し続けていました…。
1. なぜこの画面が出るのか?
セキュリティ上の保護
Google Apps Scriptは、スプレッドシートの読み書きやメールの送信など、強力な操作が可能です。悪意のあるプログラムが勝手にデータを操作しないよう、Googleは「公式に審査・承認されたアプリ」以外が動こうとすると、ユーザーに注意を促す仕組みになっています。
「未承認」の状態だから
あなたが自分で作ったスクリプトや、社内で共有されたばかりのスクリプトは、Googleによる個別の安全審査(認証)を受けていません。そのため、「どこの誰が作ったかわからない(Googleが保証していない)アプリが動こうとしていますよ」という警告が出ます。
自分で作成したスクリプトであれば、安全だとわかっているため、上記の手順で進めることができます。
⚠️注意
-
信頼できるか確認する: 自分が書いたコードや会社から受け取ったものであれば問題ありません。
-
知らない人からのリンクは避ける: 全く知らない人が作ったスクリプトでこの画面が出た場合は、安易に許可しないよう注意してください。ドライブ内のファイルが盗まれたり、勝手にメールを送られたりするリスクがあります。
無事承認が完了するとトリガーが作成されます。
🧪 動作確認:いざ、テスト送信
設定が終わったら、エディタの「実行」ボタンは押さず、実際のGoogleフォームからデータを送ります。
テストも含めた実行ログは先ほど作成したスプレッドシートにきちんと保存されていました。(テスト中の眠気の凄さがうかがえますね)

💡実装で学んだエラーが出たらここを確認
-
「undefined」と出る: フォームの質問タイトルと、コード内の
['ToDoの内容']が完全に一致しているか確認する。 -
メールが届かない: トリガーが正しく設定されているか、メールアドレスが正しく入力されているか見直しする。
✨ まとめ
今回の開発を通じて、「エラーメッセージをよく読むこと」と「一つずつ権限を確認すること」の大切さを学びました。 「今日は推し活なので早く寝る」といった些細なToDoも、自作ツールから届くと少し特別な気分になりますね。
次は、期限の前日に自動でリマインドを送る「定期実行機能」や自動でカレンダーに予定を追加してくれる機能を追加して、さらに便利にしていきたいと思います!
ありがとうございました!

本記事は 










