Zenn
📧

GmailをTypeScriptとLINE Messaging APIを用いてLINEに自動転送してみた

2025/02/23に公開
1

タイトルの通り、GmailをLINE Messaging APIを用いてLINEに転送するGASアプリを、TypeScriptを用いて作ってみたので紹介する。

https://github.com/tsukuboshi/gas-gmail-to-line

前提条件

今回はGAS開発にasideというツールを使用し、TypeScriptを用いて開発を行っている。

TypeScriptで開発する事で、型安全性を保ちながらバックエンド開発を進める事ができるためオススメしたい。

https://github.com/google/aside

また今回はLINEへの通知用APIとして、LINE Messaging API(LINE公式アカウント)を使用する。

以前はLINE Notifyも使用可能であったが2025/3/31にサービス終了するため、今後はLINE Messaging APIを使用する必要がある。

https://developers.line.biz/ja/news/2024/10/07/line-notify-will-be-discontinued/

なおLINE Messaging APIの無料プランは無料メッセージ通数が月200通までとなっているため、通知メール数が多くなってきた場合には注意したい。

https://www.lycbiz.com/jp/service/line-official-account/plan/

アプリケーション仕様

今回のGASアプリは、src/index.ts及びsrc/example-module.tsの2つのファイルからなる。

src/env.tsは、Google Spreadsheetで設定可能な以下のパラメータのデフォルト値を事前に定義している。

基本いじらなくても問題はないが、もし他の値に変えたい場合は適宜変更すると良い。

変数名 説明 デフォルト値
numberOfTokens LINE Messaging APIで使用するLINEチャネル(トークン)の個数 4
numberOfLabels 1つのLINEチャネルに対して転送したいGmailラベルの個数 6
bodyMaxLength LINEチャネルに転送するメール本文の最大文字数 500

https://github.com/tsukuboshi/gas-gmail-to-line/blob/main/src/env.ts

src/index.tsは、GASアプリのメイン処理を記述したファイルで、以下の内容を含む。

  • OnOpen関数: スプレッドシートを開いた際に実行される関数
    • AddCustomMenu関数: スプレッドシートに「通知テストの実施」と「通知トリガーを1時間で設定」のカスタムメニューを追加
    • WritePropertyToSheet1関数: 「プロパティ」シートでLINEトークンやGmailラベル名などの設定を管理
  • main関数: メール取得、整形、LINE送信といったメイン処理を実行する関数
    • fetchHomeMail関数: 指定されたGmailラベルの未読メールを取得し、LINE送信用の配列を生成
    • gmailToString関数: 取得したGmailのメールを、送信者、件名、本文(最大文字数内)を含む文字列に整形
    • sendLine関数: 整形されたメールの内容をLINE Messaging API経由で送信
  • setupOrUpdateTrigger関数: main関数を1時間ごとに自動実行するトリガーを設定/更新する関数

https://github.com/tsukuboshi/gas-gmail-to-line/blob/main/src/index.ts

デプロイ手順

デプロイ手順については、リポジトリのREADMEに記載しているため以下参照。

https://github.com/tsukuboshi/gas-gmail-to-line/blob/main/README.md

使い方

GASアプリのデプロイ後、以下の手順を実施する必要がある。

LINEチャネルの作成

LINE Messaging APIを利用する場合、事前にChannel Access Tokenを取得する必要がある。

以下の「手順」を参考に、LINE Messaging APIの長期のチャネルアクセストークンを取得し、メモしておく。

https://zenn.dev/kou_pg_0131/articles/line-push-text-message

Gmailラベル及びフィルタの作成

Gmailの特定のメールをLINEに転送するためには、事前にGmailのラベル及びフィルタを作成する必要がある。

以下の「フィルタによる自動仕分けをする」を参考に、転送したいメールを条件検索するためのラベル及びフィルタを作成し、新規作成したラベル名をメモしておく。

https://zenn.dev/kzautomation/articles/7c0c3a4d1758c5#フィルタによる自動仕分けをする

以下のようなフィルタ設定を作成できればOKで、この中の「ラベルを付ける」で指定したラベル名を後で使用する。

スプレッドシートでのパラメータ設定

以下のいずれかを実施する事で、GASプロジェクトに紐づいているSpreadSheetを開く。

  • ブラウザ:GASプロジェクトホームより、GASプロジェクトに紐づいているスプレッドシートを開く
  • ターミナル:npx clasp open --addonコマンドで開く

SpreadSheetの「プロパティ」シートを開いたら、以下のA列に対してLINE Messaging APIの長期のチャネルアクセストークン、(デフォルトでは)B-F列に対してGmailのラベル名を入力する。

カスタムメニューによるGAS設定

SpreadSheetの上部にカスタムメニューが追加されているので、動作確認及び自動実行の設定を行う。

まず「通知テストの実施」をクリックすると、GASのmain関数が実行されるので、指定したラベル名のメールが特定のLINEチャネルに正しく通知されるかテストすると良い。

正常に通知された場合は、作成したLINE公式アカウントに以下の通りメールの件名と内容が通知される。

動作確認後に「通知トリガーを1時間で設定」をクリックすると、GASのmain関数の実施トリガーが1時間毎に設定され、今後自動で1時間毎に通知が行われるようになる。

最後に

GASアプリはasideを用いる事でTypeScriptで開発でき、自動化の第一歩として非常にオススメである。

またLINE Messaging APIを用いる事で、LINEに通知を送る事ができるため、通知アプリとしても活用できる。

今回はGmailの特定メールをLINEに転送するアプリを作成したが、他にも様々な使い方が考えられるため、是非自分の用途に合わせてカスタマイズしてみてほしい。

1

Discussion

ログインするとコメントできます