無事に「いいねボタン」を設置することができましたが、欲が止まらず、「いいね」されたら通知が来るようにしました。今回もGeminiとChatGPTに大活躍してもらいます。
「いいね」してもらったら通知がほしい
Xの「いいねされました」という通知楽しいですよね。ぜひこれをブログにも実装したいと思いました。Geminiに聞いたら3つの提案をされました。
-
Firebaseのスマホアプリを入れる
Firebaseの公式スマホアプリを入れておくと、データベースの数字が動くのをアプリでリアルタイムに確認できます。 -
Googleスプレッドシートに書き出す
「いいねが押されたらGoogleフォームにデータを送る」という処理を足せば、スプレッドシート側の設定で「変更があったら通知」を受け取ることができます。 -
SlackやDiscordに通知する
ボタンが押されたら「Webhook」で、チャット欄に「いいねがつきました」と投稿させることができます。
最終的に完成させたいのは、「いいね」が押された瞬間に、「記事URL」と「押された時間」がメールで届く仕組みです。
Google Apps Script(GAS)でメール通知を自動化する
Firebaseアプリはそもそも通知じゃないし、Webhookは知らないし、悩まず②のスプレッドシートとGoogleフォームに決定です。
Geminiの言う実装までの3ステップ
1.データを受け取るGoogleフォームを作る
2.フォームの回答をスプレッドシートに飛ばす
3.GASでメール通知を自動化する
通知の仕組み(全体像)
Firebase → フォーム → スプレッドシート → GAS → メール通知
これが「無料で、安全に、履歴を残せる」ベストな方法だそうです。
ステップ1:通知用のGoogleフォームを作る
- Google フォームで「新しいフォーム」を作成します
-
フォーム名を「いいね通知用」にして、質問を1つ作成します
質問内容:記事URL
形式:記述式 -
「公開」ボタンを押してリンクアイコンをクリック、フォームのURLをメモします
コードに貼り付けるときは、末尾の viewform を formResponse に書き換えます
ステップ2:送信先ID(entry.xxx)を特定する
- 作成したフォームの「プレビュー」を開きます
- F12キーもしくは右クリックで検証から開発者ツールを開きます。
- 「要素」タブを開き、Ctrl + F で「entry.」を検索します。
- <input type="hidden" name="entry.123456789">を見つけて、「entry.数字」 をメモします
ステップ3:BloggerのJavaScriptに追記する
pushLike() 関数の中に、フォームへデータを飛ばすコードを書き足します。前作の「いいねボタンを自作しました」のコードには追加済ですので、そのままで大丈夫です。「entry.数字」だけ書き換えてください。
ステップ4:回答をスプレッドシートに紐付ける
- フォーム編集画面の「回答」タブをクリックします。
-
「スプレッドシートにリンク」をクリックして、新しいシートを作成します
いいねが押されるとスプレッドシートに「記事のURL」と「時間」が記録されます
ステップ5:Google Apps Script(GAS)を設定する
- スプレッドシートの [拡張機能] > [Apps Script] を開きます
- function myFunction() {...} を消して、以下のコードをコピーペします
- 名前は「いいね通知」などにして「プロジェクトを保存(フロッピーアイコン)」を押します
function sendLikeNotification(e) {
// 届いたデータ(記事URL)を取得
const responses = e.values;
const postUrl = responses[1];
// 通知を送りたいメールアドレス
const recipient = "あなたの受け取りたいメールアドレス";
// メールの件名
const subject = "新しい「いいね」が届きました";
// メールの本文
const body = "ブログ記事に「いいね」が押されました。\n\n" +
"対象記事URL:\n" + postUrl + "\n\n" +
"▼ 全ての履歴を確認する(スプレッドシート)\n" +
SpreadsheetApp.getActiveSpreadsheet().getUrl();
// メール送信
MailApp.sendEmail(recipient, subject, body);
}
ステップ6:トリガー(自動実行)の設定
- 左メニューの 「時計マーク(トリガー)」 をクリック
- 右下の「+ トリガーを追加」ボタンをクリック
-
以下のように設定します
実行する関数を選択:sendLikeNotification
デプロイを選択:Head
イベントのソースを選択:スプレッドシートから
イベントの種類を選択:フォーム送信時
※プロジェクト名も変更しておくと分かりやすいです - 「保存」を押します
-
「承認」のポップアップが出ます
Googleアカウントを選択 > 「詳細」 > 「安全ではないページに移動」 > 「許可」 をクリック
メールが来た
自分で「いいね」を押したら、カウントアップして、即メールが来ました。これは便利だ。でも、そんなに「いいね」してもらえるのか😰
この記事読んだ方、「いいね」押してください🙇
リセットが少し面倒くさい
一通りテストも終わったので「カウントを0にしてから公開」と思いましたが、いくつもの道を通ってるので、全てを0にするためには3つをリセットする必要がありました。
下流からリセットしていく
リセットする順番は「どこからやっても実害はない」ですが、綺麗に終わらせるなら「下流から上流へ」さかのぼるのがおすすめです。
-
下流:スプレッドシート
文字を消す(Delete)だけだと続きの行(10行目など)に書き込まれてしまうので、「行を削除」してください。 -
中流:Googleフォーム
フォームの回答数を「0」にします。これで「スプレッドシートの行数」と「フォームの回答数」が一致します。 -
上流:Firebase
最後に大元のデータを消します。これを消すとブログ上の表示が「0」に変わります。
これで、F-lightへの引越しは完了です。ブログのカスタマイズって面白いですね。窓の手を使ったり、レジストリを弄ったりして、Windowsをカスタマイズしてワクワクしていた十数年前を思い出しました。
コメントを投稿
別ページに移動します