質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

1回答

4628閲覧

GASでGmailの新規メール(スレッドではない)を自動転送したい!

Ninja433

総合スコア6

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2020/03/26 15:12

前提・実現したいこと

Gmailの指定したフィルターの新規メールを自動転送させたいのですが、
スレッドのメールしか転送されません。(SlackのMail.App宛に自動転送している)
他のサイトでも、スレッドの転送しか記載されていないのですが、GASで転送できるのはスレッドのみなのでしょうか?
Gsuiteの関係上自動転送機能が使えないので助けてください。

発生している問題・エラーメッセージ

スレッドのメールしか転送されない。

該当のソースコード

function mailForward() { //検索条件に合致するメールを抽出 var query = 'subject:"更新" newer_than:1d'; //検索条件 var threads = GmailApp.search(query, 0, 10); //条件に合致するメールのスレッドを取得 var messages = GmailApp.getMessagesForThreads(threads); //スレッド内のメールを取得。[スレッド番号][メッセージ番号]の2次元配列になる var myMailAddress = '自分のアドレス@gmail.com'; //最後の送信者がこのアドレス(自分)に合致していないものは未返信 var forwardTo = '転送先@gmail.com'; //抽出した結果を転送する転送先アドレス var forwardSubject = '更新しましょう'; //抽出した結果を転送する転送メールの件名 var forwardBody =''; //抽出した結果を転送する転送メールの本文 //1スレッドずつ未返信か確認 for(var i=0; i < messages.length; i++) { var lastNum = messages[i].length-1; //スレッドの最後のメールのインデックスを取得(indexは0から始まるから-1する) //Logger.log('やり取り数:'+ lastNum); var lastSender = messages[i][lastNum].getFrom(); //最後のメールの送信者を取得 //Logger.log('最後の送信者:'+ lastSender); //未返信メール判定 if(lastSender.indexOf(myMailAddress) == -1){ //indexOfは文字列に指定した文字が含まれていない場合は戻り値が-1となる var messageId = messages[i][lastNum].getId(); //メッセージIdを取得 var messageDate = messages[i][lastNum].getDate(); //メッセージの受信日時を取得 var messageSubject = messages[i][lastNum].getSubject(); //メッセージの件名を取得 var messageBody = messages[i][lastNum].getPlainBody(); //メッセージの本文を取得 forwardBody = forwardBody + 'メッセージID : ' + messageId + '\r\n' + '送信者 : ' + lastSender + '\r\n' + '送信日 : ' + messageDate + '\r\n' + '件名 : ' + messageSubject + '\r\n' + '内容 : \r\n' + messageBody + '\r\n' + '+++++++++++++++++++++++++++++++++++++++++++++++\r\n\r\n'; //転送用のメッセージ本文を作成 } } //Logger.log(forwardBody); //未返信メールの情報を転送 GmailApp.sendEmail(forwardTo, forwardSubject, forwardBody); }

試したこと

初心者なので、試しようがありません。。。。

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2020/03/26 23:32

スレッドのメールという用語の意味が分かりません。他のサイトを提示いただくか、何ができて何がしたいかを言い換えていただくことはできますか? ぱっと見ですが、単にスレッドの中のメールを見ていないだけに見えます。
guest

回答1

0

javascript

1const q249634 = () => { 2 const query = 'subject:"更新" newer_than:1d'; //検索条件 3 const to = '転送先@gmail.com'; 4 const subject = '更新しましょう'; 5 const me = '自分のアドレス@gmail.com'; 6 const m = GmailApp.getMessagesForThreads(GmailApp.search(query)) 7 .forEach(th=> { 8 const recent = th[th.length - 1]; 9 if(recent.getFrom() === me) return; 10 const body = `メッセージID : ${recent.getId()} 11送信者 : ${recent.getFrom()} 12送信日 : ${recent.getDate()} 13件名 : ${recent.getSubject()} 14内容 : 15${recent.getPlainBody()} 16+++++++++++++++++++++++++++++++++++++++++++++++ 17 18`; 19 GmailApp.sendEmail(to, subject, body); 20 }); 21}

投稿2020/04/01 06:15

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問