LoginSignup
2
5

More than 1 year has passed since last update.

Gmail自動転送が禁止なら GAS で転送しようじゃないか

Last updated at Posted at 2022-12-03

企業によっては、セキュリティやコンプライアンス等の規定によりメールの自動転送(他メールアドレスへの全自動転送)が禁止されてものと思います。Google アカウントが会社で管理されているのであれば設定が無効化されているでしょう。

今回は GAS(Google Apps Script)を利用し Gmail の自動転送を擬似的に再現します。
※なお、企業ごとの規定理由によってはかなりグレーな方法であることをご認識おきください。

1. GAS プロジェクトの作成

Apps Script トップより新規プロジェクトを作成します。

const FORWARD_MAIL_ADDRESS = '【転送先メールアドレス】';
const MY_MAIL_ADDRESS = '【転送元メールアドレス】';
const FIRE_INTERVAL_MINUTES = 1;

function forward() {
  const now = Math.floor(new Date().getTime() / 1000);
  const interval = now - (60 * FIRE_INTERVAL_MINUTES);

  const query = 'is:unread' + ' ' + '-from:' + MY_MAIL_ADDRESS + ' ' + 'after:' + interval;

  const threads = GmailApp.search(query);
  const messages = GmailApp.getMessagesForThreads(threads);
  for (const i in messages) {
    const lastNo = messages[i].length - 1;
    const subject = messages[i][lastNo].getSubject();
    const body = messages[i][lastNo].getPlainBody();

    GmailApp.sendEmail(FORWARD_MAIL_ADDRESS, subject, body);
  }
}

コードの流れは読めばわかるかと思います。

肝は query で定義される Gmail 検索キーワードでしょうか。
未読で、転送元メールアドレスでない、実行間隔内に届いたメールが対象となります。

GAS は実行の間隔として定義できるので、その間隔時間[分]を FIRE_INTERVAL_MINUTES で定義してあげてください。

2. GAS プロジェクトのデプロイ

トリガーを宣言します。

  • 実行する関数を選択

forward を選択

  • 時間ベースのトリガーのタイプを選択

→ 「分ベースのタイマー」を選択

  • 時間の間隔を選択(分)

→ 「1分おき」を選択(しました、私は。)

※GASの実行回数や実行時間には制限があります。詳しくは Google サービスの割り当て - 現在の制限 をご参照ください。

おまけ

私はメール通知を受け取るためだけにメーラーを常時バックグラウンド起動しておきたくありません。「 Slack で」スケジュールやメールも管理したい主義でいます。

ので、私は「Slack へのメールの転送」機能を利用し Slackbot 転送先メールアドレスを発行、発行したメールアドレスを FORWARD_MAIL_ADDRESS に設定しています。
Slack を最大限を活用するアイデアとして、来週は「Slackとカレンダーアプリを連携して生産性が爆上げ」を執筆予定です。

2
5
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
2
5