特定のアドレスから届くGmailをLINEに通知する方法
この記事では、特定のアドレスから届いたGmailを自動的にLINEに通知する方法を、IT初心者でも分かりやすく解説します。これにより、大事なメールを見逃すことなく、すぐにLINEで受け取ることができるようになります。
1. Google Apps Scriptとは?
まず、Google Apps Script(GAS)について簡単に説明します。GASは、Googleが提供しているクラウドベースのプログラミング環境で、GmailやGoogle DriveなどのGoogleサービスを自動化することができます。今回は、このGASを使って、Gmailに届いた特定のメールをLINEに通知する方法を紹介します。
2. 事前準備
a. LINE Notifyの設定
LINE Notifyの「マイページ」にアクセスし、「トークンを発行する」をクリックします。
トークンの名前を入力し、通知を送りたいグループまたは個人チャットを選択して「発行」をクリックします。
発行されたトークンをコピーして、後で使えるようにしておきます。
LINE Notifyというbotから通知が来ていると思うので、このアカウントを通知させたいグループに招待します。
b. Google Apps Scriptの準備
Gmailを使うGoogleアカウントにログインします。
Gmailの画面の上部にある「Google Apps」メニューから「Google Apps Script」を選択します。
もしくは、Google Apps Scriptのウェブサイトに直接アクセスしても構いません。
3. スクリプトを書く
次に、GmailをLINEに通知するためのスクリプトを書いていきます。以下の手順に従ってください。
新しいプロジェクトを作成
「新しいプロジェクト」をクリックし、プロジェクトに分かりやすい名前をつけます(例:「GmailからLINE通知」)。
スクリプトを貼り付ける
以下のスクリプトをエディタに貼り付けます。
var lineToken = "ここに発行されたLINE Notifyのトークンを貼り付けてください"; // LINE Notifyトークン
// LINE通知を送信する関数
function send_line(message) {
var payload = {'message': message};
var options = {
"method": "post",
"payload": payload,
"headers": {"Authorization": "Bearer " + lineToken}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}
// メールを取得し、特定の送信元からのメールをフィルタリングする関数
function fetchContactMail() {
var now = new Date();
var past = new Date(now.getTime() - get_interval * 60000); // 5分前の時間を計算
var searchQuery = 'is:unread after:' + Math.floor(past.getTime() / 1000); // UNIXタイムスタンプを使う
var threads = GmailApp.search(searchQuery);
var messages = GmailApp.getMessagesForThreads(threads);
var filteredMessages = [];
var targetSender = "no-reply@example.com"; // ここに特定の送信元アドレスを指定
for (var i = 0; i < messages.length; i++) {
var lastMessage = messages[i].slice(-1)[0];
var sender = lastMessage.getFrom();
if (sender.indexOf(targetSender) !== -1) { // 送信元が特定のアドレスかチェック
var messageBody = "\n【date】: " + lastMessage.getDate() +
"\n【From】: " + sender +
"\n【Subject】: " + lastMessage.getSubject() +
"\n【Body】: \n" + lastMessage.getPlainBody();
filteredMessages.push(messageBody);
lastMessage.markRead(); // メッセージを既読にする
}
}
return filteredMessages;
}
// メイン処理
function main() {
var newMessages = fetchContactMail();
if (newMessages.length > 0) {
for (var i = newMessages.length - 1; i >= 0; i--) {
send_line(newMessages[i]);
}
}
}
スクリプトの内容を理解する
- lineToken: 先ほどLINE Notifyで発行したトークンをここに貼り付けます。
- send_line(): この関数は、LINEにメッセージを送信するためのものです。
- fetchContactMail(): この関数は、Gmailから特定の送信元のメールを検索し、フィルタリングします。
- main(): メイン処理で、新しいメールがあればLINEに通知を送信します。
トリガーの設定
次に、スクリプトが定期的に実行されるようにトリガーを設定します。
- トリガーを設定する
- エディタのメニューから「時計アイコン」をクリックし、「トリガー」を開きます。
- 「main」関数に対して「時間主導型トリガー」を設定し、例えば5分ごとにスクリプトが実行されるように設定します。
スクリプトのテスト
スクリプトが正しく動作するかを確認するために、スクリプトエディタから「main」関数を手動で実行してみてください。指定した送信元からの未読メールが存在する場合、LINEに通知が送信されるはずです。
完成!
これで、特定のアドレスから届くGmailをLINEに通知する設定が完了しました。これにより、大事なメールを見逃すことなく、リアルタイムで確認できるようになります。
最後に
この記事では、GASを使ってGmailからLINEに通知を送る方法を紹介しました。これを応用することで、さまざまな通知システムを自分で構築することができます。ぜひチャレンジしてみてください!