« テレワークで経営者だけが知っておくべきこと~ITよりも労務管理に注意 | トップページ | 身分証明書としてのマイナンバーカード »

2020年11月19日 (木)

Gmailで件名だけを他のメールやLINEに自動転送する - iGotEmail

Ogp

Gmailで受信したメールの件名だけまたは本文を、別のアドレスやLINEに転送するスクリプトを作成しました。

機密保持やモバイルでの通信量軽減などのために、メール本文を自動転送せずに、メールを受信した通知を別のメールで確認したいときなどに使えます。
そのためのアドオンがネット上にありますが、そのアドオンはメール本文にアクセスできてしまうので、心配ですよね。
そこで、自分の管理下においたスクリプトで動作するように作成しました。

そのようにするためには、GASと呼ばれるGoogle Apps Scriptの開発者と同じ手順で設定をする必要があり、そのための知識が必要になってしまいます。
そこで、その知識がなくても、設定できるように具体的な手順をスクリーンショットで紹介します。

なお、本文だけでなく、メールの件名も秘匿したい場合には、受信日時と送信元アドレスだけにすることもスクリプトを修正すればできます。

以下のリンクから、内容を確認できます。

 

以下の内容は古い内容です。上記のリンク先に最新の内容があります。
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

プロジェクトを作成する

Google Apps Script (GAS) にアクセスします。

https://script.google.com/

以下のようなページが表示されます。

00_20201119153201

画面右上のアイコンを見て、転送されたいメールアカウントでログインしているかを確認します。

異なる場合には、アイコンをクリックしてアカウントを切り替えます。

02

アカウントに間違えがないことを確認してから、「新しいプロジェクト」をクリックします。

01

「無題のプロジェクト」が作成されました。

03

「ファイル」メニューから「名前を変更」を選びます。

04

プロジェクト名を入力するポップアップ画面が表示されるので、「iGotEmail」と入力します。

05

プロジェクト名が変更されたことを確認します。

06

 

スクリプトを貼り付ける

「コード.gs」というところに、以下のように表示されています。


function myFunction() {
}

以下のスクリプトをコピーして、「コード.gs」のところに貼り付けて差し替えます。


/*
* このファイルの最新版: https://yosihiro.com/kitchen/GoogleAppsScript/iGotEmail/
*/
/* You must change this. */
const mailDestination='通知先メールアドレス'; // 通知先アドレス
/* You may need change this. */
const mailFilter='is:unread'; // 通知対象メールの条件
// const mailFilter='to:(myself@example.com) is:unread'; // 通知対象メールの条件
// const mailFilter='from:(bestfriend@example.com) is:unread'; // 通知対象メールの条件
/* You may change these. */
const mailSenderName='メール受信の通知'; // 通知メールの差出人表記
const mailSubjectPrefix='[受信通知] '; // 元のメール件名の先頭に付けるテキスト
const mailInterval=10; //ここで指定した分毎に実行されるようにトリッガーを設定する
/* You should not change this. */
const MaxMailFetch=100; // Note that the maximim number is 20,000 hits per day for free account.
function iGotEmail() {
const now=Math.floor(new Date().getTime()/1000);
const query=mailFilter+' after:'+(now-(mailInterval+1)*60); // のりしろとして1分増やしておく
  const myThreads=GmailApp.search(query, 0, MaxMailFetch);
const myMessages=GmailApp.getMessagesForThreads(myThreads);
Logger.log(myMessages.length+" 通のメールを通知しました\n");
  if(myMessages.length > 0) {
myMessages.map (
function(mails) {
const mail=mails[0];
if( !mail.isStarred() ) { // スターが付いていたら、既に通知済
MailApp.sendEmail({
to: mailDestination,
subject: mailSubjectPrefix + mail.getSubject(),
body: "以下とおりメールを受信しました(I've got Email as follows):\n"
+'\n\tFrom: '+mail.getFrom()
+'\n\tTo: '+mail.getTo()
+'\n\tCc: '+mail.getCc()
+'\n\tDate&Time: '+mail.getDate()
+'\n\tSubject: '+mail.getSubject()
// +'\n\n'+mail.getPlainBody() // Uncomment if you want to forward body of Email message
+'\n\nメール本文は、Gmail(https://mail.google.com/) からアクセスしてください。(Access Gmail to see mail message.)\n'
// ,attachments: mail.getAttachments() // Uncomment if you want to forward attachment also of Email message
,name: mailSenderName
// ,noReply: true // これを指定すると name が無視される
});
// mail.markRead(); // 既読にする
      mail.star(); // スターを付ける
}
}
);
}
if(myMessages.length >= MaxMailFetch) {
MailApp.sendEmail({
to: mailDestination,
subject: mailSubjectPrefix + 'WARNING',
body: 'メール通知の上限数('+MaxMailFetch+'通)より多くのメールを\n'
+'今から '+mailInterval+' 分以内に受信した可能性があります。\n'
+'上限数を超えたメールについては通知されませんので、ご確認ください。\n',
name: mailSenderName
});
}
}

以下のようなかんじになります。

07

 

通知先メールアドレスを指定する

貼り付けた内容のうち、一番上にある以下の部分を変更します。


const mailDestination='通知先メールアドレス'; // 通知先アドレス

mailDestinationに、メールを受信したことを通知する通知先のメールアドレスを指定します。

そのために、「通知先メールアドレス」の箇所に、通知先のメールアドレスを書きます。

たとえば、「sendto@example.com」に通知する場合には、以下のように変更します。


const mailDestination='sendto@example.com'; // 通知先アドレス

この変更をしないと、貼り付けたスクリプトのままでは、正しく動作しないので、必ず変更してください。

これにより、あなたのgmailがメールを受信すると、その日時、送信元、宛先、件名が、「sendto@example.com」宛てに通知されます。

mailFilterに、通知する対象となる条件を指定することもできます。

貼り付けたスクリプトは、以下のようになっています。


const mailFilter='is:unread'; // 通知対象メールの条件

「is:unread」は、未読のメールという条件になり、すべての未読メールが通知されます。(通知されるまでに、既に既読にしたメールは通知されません。)

この「mailFilter」の指定を変更して、通知対象となるメールを選択することができます。

たとえば、自分がCCやメーリングリストに入っているメールを除外したいなら、「to:()」という条件を付けることができます。

「to:(監視するアドレス@example.com)」により、メールの宛先に「監視するアドレス@example.com」がある場合という条件になります。この条件により、CCで受け取った場合には、通知しないということになります。

たとえば、自分のメールアドレスが「myself@example.com」であれば、以下のように指定すると、CCやメーリングリストで受信したメールは通知されなくなります。


const mailFilter='to:(myself@example.com) is:unread'; // 通知対象メールの条件

メールの送信者を選択したい場合には、「from:()」を使うことができます。たとえば、メールの送信者が「bestfriend@example.com」のメールを通知するなら、以下のように変更します。この場合は、「is:unread」をなくしたので、既読であっても通知されます。


const mailFilter='from:(bestfriend@example.com)'; // 通知対象メールの条件

 

「mailDestination」は必ず変更してください。

「mailFilter」は、必要があれば変更してください。

 

07

 

「コード.gs」の左横に「」というマークが表示されています。これは、ファイルがまだ保存されていないことを示しています。

「ファイル」メニューの「保存」をクリックして保存します。

08

」が消えたことを確認します。

09

 

動作を確認する

「実行」メニューから「関数を実行」を選択してスクリプトを実行してみます。

10
 

ポップアップ画面が表示されます。

このポップアップは、作成したスクリプトに対してGmailにアクセスすることの許可を与えるかの確認です。

求めている内容に間違えがないかを確認するため、「許可を確認」をクリックしてください。

 

11

 

通知対象となるメールアカウントを選択します。(通知先ではなく、通知されるアカウントになります。)

 

12

許可を与えようとしているアプリ(作成したスクリプトのこと)が、Googleによって確認されていないことを警告してきます。

「詳細」をクリックします。

 

13

 

 

「iGotEmail(安全ではないページ)に移動」をクリックします。

 

14

許可を与えるアプリが「iGotEmail」であり、アカウントの選択が間違っていないことを確認して、「許可」をクリックします。

 

15

 

スクリプトを実行しているという表示が出ます。(しばらくするとそのまま消えます。)

 

16

エラーがある場合には、赤色の表示がされますが、念のため、実行結果を確認します。

「表示」メニューの「ログ」をクリックします。

 

17

 

ログ画面がポップアップ表示され、通知したメールの件数がログに表示されます。この場合は、「1通のメールを通知しました。」と表示されています。

「OK」をクリックします。

20201119-131615_20201119131801
 

10分以内に受信したメールがない場合は、「0通」と表示されます。

その場合には、ダミーのメールを送って10分以内に、もういちど「実行」メニューから「関数を実行」でスクリプトを実行して、ログを確認してください。

エラーがあった場合には、貼り付けや変更が失敗している可能性がありますので、確認してください。

以上で問題なければ、過去10分以内に受信したメールの通知ができるようになりました。

 

定期的に通知するように設定する

このスクリプトを10分ごとに実行するように設定します。

「編集」メニューの「現在のプロジェクトのトリガー」をクリックします。

19

「iGotEmail > トリガー」と表示されていることを確認します。

20

画面右下にある「トリガーを追加」をクリックします。

20_20201119132701

トリガー追加のポップアップ画面が表示されます。

以下の画面を参考に「分ベースのタイマー」と「10分おき」を選択して、「保存」をクリックします。

22

以上で、設定は完了です。

作成したスクリプトが、10分間ごとにGmailを確認して、メールを受信していれば、指定したメールアドレスに通知を送信します。

この時間間隔を変更する場合には、スクリプトの修正が必要になります。

たとえば、1時間ごとに確認する場合には、スクリプト内の「mailInterval」を「60」に修正してから、上記のトリガーを「1時間おき」に変更してください。

なお、用意したスクリプトでは、メール本文や添付ファイルなどもすべてを通知するように修正することができます。

その場合には、Google サービスのクォータに注意する必要があります。

たとえば、メール本文が最大200kB、添付ファイルが最大25MBなどです。メールをすべて転送するのであれば、ここで紹介したスクリプトを使うのではなく、Gmailの転送設定をするのがよいと思います。

 

11月 19, 2020 |

コメント

コメントを書く