既に先人たちがやられているかと思うが...備忘録兼ねて...
やりたいこと
特定のメールアドレスからのメールをLINEへ転送したい
LINE Developersに登録
登録する
ユーザ名とかメールアドレスをいい感じに入力する
公式アカウントを作成する
まずは、「新規プロバイダー作成」
今回は、プロバイダ名は「メール転送用プロバイダ」とした
チャネル設定 > Messaging API > LINE公式アカウントを作成する
(ここでSMS認証を求められたので実施)
LINE公式アカウントの作成 の画面で、
| 項目 | 入力内容 |
|---|---|
| アカウント名 | 「メール転送用アカウント」 |
| メールアドレス | 自分のメールアドレス |
| 業種 | 個人 > 個人(その他) |
| 運用目的 | その他 |
| 主な使い方 | メッセージ配信用 |
| ビジネスマネージャーの組織との接続方法 | ビジネスマネージャーの組織を作成 |
を入力・選択し、「確認」 -> 「完了」。
LINE公式アカウントが作成されました。
と表示される。
「LINE Official Account Managerへ」というボタンがあるのでクリック。
トークンとユーザ名を取得
LINE Official Account Managerにて、
右上の「設定」
-> 左側の「Messaging API」
-> 「Messaging APIを利用する」
「プロバイダーを選択」画面が出るので、
さきほど作成した、「メール転送用プロバイダ」を選択する。
「プライバシーポリシーと利用規約」は任意だったので入力せずに「OK」。
これで、Messaging APIが有効になる。
LINE Developersにて、
トークンの取得
「メール転送用プロバイダ」
->「チャネル設定」
->「メール転送用アカウント」
->「Messaging API設定」
最下部の「チャネルアクセストークン」>「チャネルアクセストークン(長期)」の項目にある、「発行」をクリック
このトークンを覚えておく
ユーザIDの取得
「メール転送用プロバイダ」
->「チャネル設定」
->「メール転送用アカウント」
->「チャネル基本設定」
「あなたのユーザーID」の項目にあるIDを覚えておく
GASでスクリプト作成
スクリプト本体
「新しいプロジェクト」をクリック
上部のプロジェクト名は「Mail2Line」とした。
下記プログラムを入力して保存。
function Mail2Line() {
const lineToken = "ここにチャネルアクセストークン";
const myUserId = "ここに自分のユーザーID";
// 検索したいメールアドレスをカンマ区切りで指定
const emails = ["abc@example.com", "xyz@example.com", "test@gmail.com"];
// 検索条件を「(from:abc@example.com OR from:xyz@example.com)」という形式に結合
const searchQuery = 'is:unread (' + emails.map(email => 'from:' + email).join(' OR ') + ')';
// 未読の特定送信者からの未読メールを検索
const threads = GmailApp.search(searchQuery);
threads.forEach(thread => {
const messages = thread.getMessages();
messages.forEach(message => {
if (message.isUnread()) {
const body = message.getPlainBody().substring(0, 1000); // 1000文字で制限
const subject = message.getSubject();
const url = "https://api.line.me/v2/bot/message/push";
const payload = {
"to": myUserId,
"messages": [
{
"type": "text",
"text": "件名: " + subject + "\n\n" + body
}
]
};
const options = {
"method": "post",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer " + lineToken
},
"payload": JSON.stringify(payload)
};
UrlFetchApp.fetch(url, options);
message.markRead(); // 既読にして二重通知を防ぐ
}
});
});
}
スクリプトのテスト
上部にある、「実行」ボタンを押す。
「指定したメールアドレス」かつ「未読」のメッセージがLINEで送信されてくる、
スクリプトの設定
エディタの左側の時計マーク(トリガー)
-> トリガーを追加
以下の項目を適当に設定
| 項目 | 入力内容 |
|---|---|
| 実行する関数を選択 | Mail2Line |
| デプロイ時に実行 | Head |
| イベントのソースを選択 | 時間主導型 |
| 時間ベースのトリガーのタイプを選択 | 分ベースのタイマー |
| 時間の間隔を選択 | 5(分) |