Gmail宛の特定のメールをLINEに転送する方法
Gmail宛の特定のメールをLINEに転送する方法を紹介します。
1.はじめに
Googleアカウントを取得して、Gmailを利用できる状態であること
LINEビジネスアカウントを取得しておくこと
この情報は2026年2月鵜現在のものです。
2.LINE Developersのアカウント作成
LINE Messaging APIを利用するために、LINE Developersのアカウントを作成します。
ただ、手順の途中でLINE公式アカウントを作るよう促されるので、正しい順序ではないかもしれません。予めご了承ください。
https://developers.line.biz/ja/
にアクセスして、「コンソールにログイン」をクリック。

「アカウントを作成」をクリック。

LINEアカウントまたはメールアドレスで登録します。

ここでは音楽コミュニティで使っているメールアドレスで登録しました。

任意の名前とパスワードで登録します。

登録が完了すれば、INE Developersのコンソールにログインできますので、開発者名とメールアドレスを登録します。
ページ下の「新規プロバイダー作成」をクリック。
(ここまでの画面遷移が曖昧ですが)次のような画面になったら「Messaging API」をクリック。
3.LINE公式アカウント作成
ここで下記の画面になり、Messaging APIをこの画面で作る前にLINE公式アカウント作成し、「Line Official Account Manager」でMessaging APIの利用を有効にするよう求められます。
「LINE公式アカウントを作成する」をクリック。
作成完了すると次のような画面になります。
また、ダイアログで友だち追加するよう求められるので、表示されたQRコードを使って、スマホのLINEに公式アカウントを友だち追加しておきます。この友だち追加したLINEアカウントはあとの作業で必要になります。
公式アカウントを作成すると(多分)自動的に「Line Official Account Manager」のコンソールになるので、「Messaging API」をクリック。
「Messaging APIを利用する」をクリック。
プロバイダを選択します(候補が表示されていた気がするのでそれを選択)。
プライバシーポリシーと利用規約は任意なので何も入力せず「OK」をクリック。
確認を求められるので「OK」をクリック。
設定が完了すると次の画面が表示されます。この画面は次の作業で使うのでそのままにしてください。
4.グループID取得
作成したLINE公式アカウントの「グループID」を取得します。
グループIDはGAS(Google Apps Script)で作成する、LINEに転送するスクリプトに必要な情報です。
で、ここから話がややこしくなるのですが、LINE公式アカウントの「グループID」を取得するには、次の作業が必要です。
①任意のLINEグループを作る
②①のLINEグループに、作成した公式アカウントを追加する
③①のLINEグループに、作成した公式アカウント以外のユーザー(①のLNEグループを作成したユーザーなど)からメッセージ(トークデータ)を送る
この③の動作で、公式アカウントにメッセージが届くのですが、そのメッセージの中に「グループID」が含まれます。
グループIDはLINE公式アカウントのコンソール画面では取得できず、メッセージだけに含まれるようで、そのため一時的にこの作業が必要となります。
ただ、LINEのトーク画面ではその情報は見ることはできないので、Webhookという仕組みを使って、グループIDを含むメッセージを取得します。
そのために、Webhook用のURLをLINE公式アカウントに登録し、③の動作でグループIDを含む各種情報を取得します。
情報を取得する手順ですが、まず、
にアクセスして、赤枠のURLをコピーします。
コピーしたURLを、LINE公式アカウントの「Messaging API」の項目に「Webhook URL」に設定、保存します。
これでこのLINE公式アカウントへのメッセージをWebhookで取得できる状態になりました。このwebhook.siteの画面に情報が表示されるので、このままにしておいてください。
LINE公式アカウントの「Messaging API」の画面を間違って変えてしまった場合、ここに戻ってくる方法ですが、LINE公式アカウント右側の「設定」をクリックすれば、左メニューに「Messaging API」が表示されるので、そのリンクをクリックします。

また、LINE Developersにも同じような画面があるので、どちらに設定しても、もう片方に反映されるようです。なお、こちらの画面には「Webhookの利用」というスイッチがあるので、とりあえずオンにしておきました。
これでグループIDを取得する準備ができたので、③の投稿を行うと、webhook.siteの画面にJSONが表示されるので、その中にある「groupId」の値をコピーしてください。データ取得後、先ほどの「Webhookの利用」はオフにしてOKです。
5.チャネルアクセストークン取得
チャネルアクセストークンを取得します。
チャネルアクセストークンIDもグループID同様、GAS(Google Apps Script)で作成するLINEに転送するスクリプトに必要な情報です。
チャネルアクセストークンは、LINE DevelopersのMessaging API画面の下の方にある「発行」ボタンをクリックすれば表示されるので、それをコピーします(画像は発行後のもの)。
5.GASにスクリプト作成
GAS(Google Apps Script)にLINEに転送するスクリプトを作成します。先ほど取得したグループIDと、「チャネルアクセストークン」が必要になります。
Gmailと同じアカウントで、
にアクセスして、「新しいプロジェクト」をクリック。

コードを記述する部分にサンプルが表示されるので、それをすべて削除して下記の内容を貼りつけます。
このスクリプトはAIとやり取りしながら、下記の条件になるようにしています。
- To:xxx@xxx宛のメール(=Gmailへの転送メール)だけを対象
- 未読のみが対象
- 迷惑フォルダも検索する
- 1通ずつ送信するとMessagindg APIの月200通の上限にひっかかるので、複数のメールをまとめて転送
- 送信成功したら既読マークをつける(Gmailと同じアカウントのGASで作らないとマークされません)
const LINE_TOKEN = 'チャネルアクセストークン';
const LINE_GROUP_ID = 'グループID';
const TO_ADDR = 'GMailに送信されたTo:のアドレス';
const MAX_THREADS_PER_RUN = 20;
const MAX_BODY_CHARS = 150;
const DONE_LABEL = 'LINE_DONE';
const LINE_MAX_CHARS = 4500;
function checkGmailAndSendToLine() {
const doneLabel =
GmailApp.getUserLabelByName(DONE_LABEL) || GmailApp.createLabel(DONE_LABEL);
// 未読だけ+処理済みラベルは除外(迷惑メールも含む)
const query = `in:anywhere to:${TO_ADDR} is:unread -label:${DONE_LABEL}`;
const threads = GmailApp.search(query, 0, MAX_THREADS_PER_RUN);
Logger.log(`query=${query}`);
Logger.log(`threads=${threads.length}`);
if (threads.length === 0) return;
const blocks = [];
threads.forEach((thread, i) => {
const msg = thread.getMessages().pop();
const from = msg.getFrom();
const subject = msg.getSubject();
let body = (msg.getPlainBody() || '').replace(/\r\n/g, '\n').trim();
if (body.length > MAX_BODY_CHARS) {
body = body.substring(0, MAX_BODY_CHARS) + '...';
}
blocks.push(`■ ${i + 1}\n送信元: ${from}\n件名: ${subject}\n${body}`);
});
let finalMessage =
`未読 ${threads.length}件\n\n` +
blocks.join('\n\n----------------\n\n');
// LINE文字数ガード(失敗を避ける)
if (finalMessage.length > LINE_MAX_CHARS) {
finalMessage = finalMessage.substring(0, LINE_MAX_CHARS) + '\n\n(以下省略)';
}
const ok = sendToLine(finalMessage);
if (ok) {
// 成功した時だけ:処理済みラベル付与+既読化
threads.forEach(t => {
t.addLabel(doneLabel);
t.markRead();
});
Logger.log(`marked read + labeled: ${threads.length}`);
} else {
Logger.log('LINE送信失敗: 既読にしません(次回再送できるように)');
}
}
function sendToLine(message) {
const url = 'https://api.line.me/v2/bot/message/push';
const payload = {
to: LINE_GROUP_ID,
messages: [{ type: 'text', text: message }]
};
const options = {
method: 'post',
contentType: 'application/json',
headers: { Authorization: 'Bearer ' + LINE_TOKEN },
payload: JSON.stringify(payload),
muteHttpExceptions: true,
};
const res = UrlFetchApp.fetch(url, options);
const code = res.getResponseCode();
const text = res.getContentText();
Logger.log(`LINE code=${code}`);
Logger.log(`LINE body=${text}`);
return code === 200;
}
ペーストしたら「保存」アイコンをクリック。

このあと、このスクリプトが周期的に動作するよう「トリガ」を設定するのですが、その前に、このスクリプトが正常に動作することを確認するため「実行」をクリック。

実行結果が画面の下に表示されるので、それを確認するとともに、LINEグループに転送されていることを確認します。

6.スクリプトにトリガ設定
作成したスクリプトの左側にある時計のアイコンをポイントすると「トリガー」が表示されるのでクリック。

右下の「トリガーを追加」をクリック。

それぞれ下記の通り設定します。
- 起動する関数:上のコード利用であれば「checkGmailAndSendToLine」を選択
- 実行するデプロイを選択:Headのまま
- イベントのソースを選択:時間主導型
- 時間ベースのトリガーのタイプを選択:分ベースのタイマー
- 時間の間隔を選択(分):10分など、デバグ中は1分でもOK
これでトリガーの周期にLINEグループにメールの内容が転送されてくればOKです。
AWSのCloudFrontを設定する方法
AWSのCloudFrontを設定する方法を紹介します。
1.はじめに
Amazon CloudFrontは、AWSが提供する高速で安全なコンテンツ配信ネットワーク(CDN)サービスです。
世界中に分散したエッジロケーションを利用し、Webサイト、動画、APIなどの静的・動的コンテンツをユーザーに低遅延で配信します。
また、キャッシュ機能によりオリジンサーバーの負荷を軽減し、高可用性とセキュリティを実現します。
記事は2回に分けて、1回目はCloudFrontのディストリビューションを作成して、EC2インスタンスのサーバにアクセスするところまでの手順を説明します。
2.ディストリビューション作成
AWSコンソールのホームから「すべてのサービスを表示」をクリック。
![]()
「ネットワーキングとコンテンツ配信」のカテゴリより「CloudFront」をクリック。

「ディストリビューションを作成」をクリック。ひとつのディストリビューションでひとつのCloudFrontのドメインが割り当てられます。

プランの選択画面になるので、ここでは「Free」を選択します。

「Next」をクリック。

「Distribution name」に任意の名称、「Distribution type」は「Single website or app」を選択します。

「Next」をクリック。

origin type:otherを選択

Custom origin:EC2インスタンスの「パブリックDNS」を設定
Origin path:空白のまま
![]()
「Setting」は「Cutomize origin settings」を選択したあと、下記を設定しました。
- プロトコル:httpのみ
- Origin IP address type:IPv4-only
「Cache settings」も「Cutomize cache settings」を選択したあと、下記を設定しました。
- キャッシュポリシー:CachingDisabled
など。
(一度拡大したあと、画像の右下あたりをクリックすると最大化します)
![]()
「Enable security」は何も使わないのでデフォルトのままとします。
最後に確認画面が表示されるので問題なければ「Create distribution」をクリック。

2.ディストリビューションドメイン名の確認
左上の「ディストリビューションドメイン名」が、CloudFrondから割り当てられたドメイン名になります。
3.CloudFrontのドメインによるアクセス
ブラウザのURLについて、EC2インスタンスのパブリックIPv4アドレス(下記)をこのドメインに変更することで、CloudFront経由でのアクセスになります。

AWS SES(Amazon Simple Email Service)とSMTPを設定する方法
EC2サーバーにインストールしているMovableTypeからメールを送信したいので、AWS SES(Amazon Simple Email Service)とSMTPを設定してみました。

2026年2月現在の情報で、テスト用メールのため、設定は最低限です。
前半はSESの設定なので、MovableType以外の用途の方にも役立てば幸いです。
SESにはIAMユーザーが必要となりますが、設定の中で自動的に作成されるようです。
1.SES設定
AWSホームで「すべてのサービス」をクリックした先にある「Amazon Simple Email Service」をクリック

「使用を開始」をクリック

検証用メールアドレスを設定して「次へ」をクリック。検証用メールアドレスは実際に自分で受信できるアドレスを設定します。
![]()
送信ドメイン(実際に利用しているドメイン)を設定して、MAIL FROM ドメインに「mail(.koikikukan.com)」を設定して「次へ」をクリック。
![]()
ドメインはレンタルサーバなどで取得しているドメインを設定する必要があります。ここではこのサイトの「koikikukan.com」を設定します。
このドメインは「さくらインターネット」で利用しているので、このあとの手順でドメインに対応するメールサーバの設定を行います。
「配信性能の強化」での、
- Virtual Deliverability Manager
- 開封数とクリック数を追跡
- 最適化された共有配信
はすべてオンのまま「次へ」をクリック。
![]()
「専用 IP プールを作成」はオフのまま「次へ」をクリック。
![]()
「テナント管理」は設定せず「次へ」をクリック。

SESの設定内容を確認して「使用を開始」をクリック。
![]()
ここまで設定すると、次に「未解決のタスク」が表示されます。
この中で最初に着手するのは「送信ドメインを検証」で、「DNSレコードを取得」をクリック。
![]()
2.DNS設定(レンタルサーバ側)
ここからはさくらインターネットの設定画面で、SESが送信ドメイン検証を実施するための設定を説明します。
今回の手順の中で一番悩んだところです。
手順としてまとまっていないのでポイントのみ。
サーバーコントロールパネルの「ドメイン/SSL」→「ドメイン/SSL」をクリック。

サーバで利用しているドメインの一覧が表示されるので、今回利用するドメインの右側にある「設定」→「DNSレコード設定」をクリック。

レコード情報が表示されるので、SESの「DNSレコードを取得」をクリックしたときに表示される内容(下記)をここに追加していきます。
さくらインターネットのDNS表示は次のようになっています。
- グレー部分:SESの各XXレコードの「名前」
- TXTやMX:SESの各XXレコードのタイプ
- テキストフィールドまたはテキストエリア:SESの各レコード+タイプの「値」
設定は「名前」→「タイプ」→「値」の順で設定してします。
「名前」を一覧に新たに追加するには、一覧の一番下に「新規エントリー」があるので、「追加する」をクリック。

表示されたダイアログに「レコード名」を設定して「追加する」をクリックすれば、タイプ(レコード種別)や値を設定できます。
![]()
既存の一覧に「名前」がすでにある場合は、その中の下にある「新規レコード」を追加して、タイプ(レコード種別)と値を設定します。

なお、値を設定したときに「~の参照先にAレコードがありません」というエラーが表示される場合、値の最後にピリオドを付与することで解消します。
SESの方では自動的に検証しているようで、DNSレコードのすべての設定が終わって少しすると「検証済」になるようで、これで設定OKです(「未解決のタスク」から「完了したタスク」に自動的に移動します)。
![]()
3.検証用メール送信
また、DNS検証が「検証済」になると、最初に登録した検証用メールアドレスに検証メールが自動的に送信されるので、メールに記載されたリンクをクリックすれば「メールアドレスを検証」が検証済になります(「未解決のタスク」から「完了したタスク」に自動的に移動します)。
![]()
![]()
4.本番リクエスト
ここまでOKになれば、SESの「本番アクセスをリクエスト」をクリック。
![]()
下記を設定し、「了解」をチェックして「リクエストの送信」をクリック。
- リクエストタイプ:トランザクション
- ウェブサイトの URL:ドメインのURL
- その他の連絡先:任意
- 連絡する際の希望言語:Japanese
私の場合、リクエストは数分で有効化されました。
![]()
5.SMTP設定
あとは設定したSESを送信メールサーバとして振舞うためのSMTP設定です。
SESのメニュー左にある「SMTP設定」をクリック。

「SMTP認証情報の作成」をクリック。

表示された「ユーザー名」と「ユーザーグループ名」は変更せずに、右下の「ユーザーの作成」をクリック。
ユーザーを作成すると、SMTP認証に必要な情報が表示されます。パスワードはこの画面でしか表示されないので「表示」をクリックし、表示内容を別の場所に保存してください。

6.MovableTypeにSMTP情報を設定
MovableTypeからメール送信できるようにするため、前項の内容をmt-config.cgiに追加します。
追加する内容は下記です。
MailTransfer smtp
SMTPServer <SMTPエンドポイント>
SMTPPort 587
SMTPAuth starttls
SMTPUser <SMTP認証情報のSMTPユーザー名> ※「IAMユーザー名」ではありません
SMTPPassword <SMTP認証情報のSMTPパスワード>
SMTPServerの設定内容は、「Amazon SES」→左メニューの「SMTP設定」をクリックしたときに表示される「SMTPエンドポイント」です。
