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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Gmail

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

Google Apps Script

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Q&A

解決済

1回答

1776閲覧

【Google Apps Script】Gmail検索 セル参照

退会済みユーザー

退会済みユーザー

総合スコア0

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Gmail

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

Google Apps Script

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

0グッド

0クリップ

投稿2020/07/03 06:58

前提・実現したいこと

スプレッドシートに記載している件名でGmailを検索し転送したいです。

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

テキスト入力だと問題なく転送可能ですが、セル参照にするとforwardBodyで指定している本文しか送信されてない。

該当のソースコード

function mailForward() { //検索条件に合致するメールを抽出 var sheet = SpreadsheetApp.getActiveSheet(); var value1 = sheet.getRange("AB81").getValue();//ここが問題点かと思いますが、解決方法が分からず。。。 var query = 'subject: value1'; //検索条件 var threads = GmailApp.search(query); //条件に合致するメールのスレッドを取得 var messages = GmailApp.getMessagesForThreads(threads); //スレッド内のメールを取得。[スレッド番号][メッセージ番号]の2次元配列になる var myMailAddress = '●●@●●.com'; //最後の送信者がこのアドレス(自分)に合致していないものは未返信 var forwardTo = '●●@●●.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); }

試したこと

下記の方法でもセル参照しましたが、実現できませんでした。

var range=sheet.getRange("{セルの番地}") var range=sheet.getRange("{セルの番地(始まり)}:{セルの番地(終わり)}") var range=sheet.getRange({行番号},{列番号}) var range=sheet.getRange({行番号},{列番号},{行数}) var range=sheet.getRange({行番号},{列番号},{行数},{列数})

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

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

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

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

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

guest

回答1

0

ベストアンサー

全部は見てませんが、とりあえず query のとこを変えてみてはいかがでしょうか?

var query = 'subject: value1'; //検索条件 //↓ 以下に変更 var query = 'subject:' + value1; //検索条件

投稿2020/07/03 07:57

sawa

総合スコア3002

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

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

退会済みユーザー

退会済みユーザー

2020/07/06 08:27

いつもありがとうございます。 いただいた内容で問題なく検索ができました! 助かります。 別途の質問になってしまい恐縮ですが var myMailAddress でもセルを参照するように対応したく。 その場合はどのように記載すればいいでしょうか? 同じ方法では対応できず困っております。 もしご回答いただける範囲内であればよろしくお願い致します。
sawa

2020/07/06 09:16

同じ方法ですよ。var value1と同じように書いてみましょう。
退会済みユーザー

退会済みユーザー

2020/07/07 02:37

できました! いつもご回答いただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問