🎀 Notifyが終了⁉️OMG〜😱
みんな大好きLINE Notifyが、サービス終了しちゃうらしいの〜😭
2025年3月31日 までだから、それまでに移行しなきゃダメ👀💦
公式の悲報😢
LINE Notify サービス終了のお知らせ
これからは、 LINE Messaging API っていうもっとイケてるやつを使って通知するんだって✨
ま、Notifyよりいろいろ機能盛り盛りらしいから、ギャルも切り替えていくよ〜ん🌈
Messaging APIってなに?🧐💭
Messaging APIって、Notifyより進化してるけど、ちょっとクセがある感じ💔
でもね、超わかりやすく説明するから心配いらんよ🫶
💸 コスト感はこんな感じ!
- Notify は完全無料💖(感謝しかない🙏✨)
- Messaging API は無料枠があるけど、200通/月まで📩
例:
10人グループに1メッセ送ると10通カウントされるの😱!
100人グループなら2回でアウト❌
仲間内の通知には正直キツいけど、自分用とか特定の通知 なら余裕っしょ👌✨
やってみた系🌟GASでWebhook連携✨
さてさて、LINEから届く通知を Googleスプレッドシート に保存するやつ作るよ〜ん📊💕
📋 手順はこうだよ!
-
スプレッドシート作る
- シート名は「WebhookData」で決まりっしょ⭐️
-
GASを書く✍️💻
- 以下のコードをペタッと貼り付けてね!
// スプレッドシートID 🎀(スプレッドシートのURLからIDコピってね〜✨)
const SHEET_ID = "YOUR_SPREADSHEET_ID";
// 保存するシートの名前は「WebhookData」って感じで決まりっしょ⭐️
const SHEET_NAME = "WebhookData";
// Webhookからデータをキャッチ💌
function doPost(e) {
// LINEから飛んできたリクエストデータをJSON形式に変換✨
const contents = JSON.parse(e.postData.contents);
// イベントデータ(複数かも!)を抽出💃
const events = contents.events;
// スプレッドシートをオープンしてターゲットシートをゲット📝
const sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName(SHEET_NAME);
// イベントデータを1つずつシートに記録していくよ〜ん🌈
events.forEach(event => {
const timestamp = new Date(event.timestamp); // イベント発生時刻をGet⏰
const sourceType = event.source.type; // イベント元(user or group)をゲット📌
const sourceId = event.source.userId || event.source.groupId; // userIDまたはgroupID取得🆔
// スプレッドシートの次の行にデータを追加💃📊
// 順番は [タイムスタンプ, 送信元タイプ, 送信元ID] だよ〜
sheet.appendRow([timestamp, sourceType, sourceId]);
});
// LINEサーバーに「OKです〜💕」ってレスポンス返す
return ContentService.createTextOutput(JSON.stringify({status: "success"}))
.setMimeType(ContentService.MimeType.JSON);
}
-
デプロイする🌈
- GASメニューから「デプロイ > ウェブアプリとしてデプロイ」やって、URLゲット🍭✨
-
Webhook設定する📱
- LINE Developer ConsoleでWebhook URLをペタッと登録〜!
📈 実行結果を見てっ✨
LINEに何かメッセージ送ると、スプレッドシートに Timestamp / SourceType / SourceID がズラッと出てくるよ!👀🎉
ギャル的困ったポイント👛
-
アクセストークン問題😮💨
- Consoleでトークン作るのがちょいダル…けど1回だけだから頑張ろ💪✨
-
送信先IDの謎(uid, gid)🤔
-
Webhook設定 して、友達登録とかグループ招待でIDゲットするんだけど…ちょっとめんどいw
超楽したいなら GoogleスプレッドシートをWebアプリ化 して自動取得するのもアリかもね💖
-
Webhook設定 して、友達登録とかグループ招待でIDゲットするんだけど…ちょっとめんどいw
一応サンプルのコードも書いたから載せとくね💻
// 🌟スプレッドシートID(スプレッドシートURLからコピるだけっしょ〜!)
const SHEET_ID = "YOUR_SPREADSHEET_ID";
// 保存用シート名、デフォは "WebhookData" ね✨
const SHEET_NAME = "WebhookData";
// 💌 Webhookからのデータを受け取る
function doPost(e) {
// JSONデータ解析するよ〜✨
const contents = JSON.parse(e.postData.contents);
const events = contents.events;
// スプレッドシートをオープン💻
const sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName(SHEET_NAME);
// イベントデータをシートに記録していくよん🎀
events.forEach(event => {
const timestamp = new Date(event.timestamp); // イベントの時間⏰
const sourceType = event.source.type; // 送信元タイプ(userとかgroupとか)💃
const sourceId = event.source.userId || event.source.groupId; // 送信元ID(uidかgidね)✨
// スプレッドシートにペタっと保存📊
sheet.appendRow([timestamp, sourceType, sourceId]);
});
// LINEにレスポンス送るからこれ大事〜🙌
return ContentService.createTextOutput(JSON.stringify({status: "success"}))
.setMimeType(ContentService.MimeType.JSON);
}
// 🔧 UID/GIDをゲットしやすくするためのシート初期化機能
function setupSheet() {
const sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName(SHEET_NAME)
|| SpreadsheetApp.openById(SHEET_ID).insertSheet(SHEET_NAME);
// シートにカラム名入れとくと便利っしょ〜✨
sheet.getRange(1, 1, 1, 3).setValues([["Timestamp", "SourceType", "SourceID"]]);
}
まとめだよ🎀
- Notify終了だから、Messaging APIに移行しようね〜✨
- 無料枠気にしつつ、通知システムをリニューアル💖
- ギャルはコード書くのもイケてるし、GASでスプレッドシート連携とか余裕っしょ⭐️
みんなも超イケてる通知システム作ってみてね💌✨ なんかあったらコメントよろしくっ✌️💕