0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Apps Script + LINE Messaging API でGmailをLINEへ自動転送したい

0
Posted at

既に先人たちがやられているかと思うが...備忘録兼ねて...

やりたいこと

特定のメールアドレスからのメールを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(分)

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?