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

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

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

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

Gmail

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

Google Apps Script

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

Q&A

解決済

1回答

4037閲覧

【Gメールからスプレッドシートへの転記】スレッドの中の不必要なメールを対象外にしたい

0131

総合スコア5

Google スプレッドシート

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

Gmail

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

Google Apps Script

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

0グッド

1クリップ

投稿2021/12/22 09:09

前提・実現したいこと

Gメールからお問い合わせ内容などを抽出→スプレッドシートに転記したくgasを作成しています。
1通目のメールだけを対象にしたいのですが、返信メールや外部からのメールがスレッドとなっているため
返信がくるたびに既に転記されている内容もスプレッドシートに転記しようとしてしまいます。

返信メールは除外、1通目のメールだけを対象にしたいのですが、助けていただけますでしょうか。

該当のソースコード

// 検索条件に該当するスレッド一覧を取得 var threads = GmailApp.search('is:unread subject:お問い合わせ受付のお知らせ -label:転記済み'); // スレッドを一つずつ取り出す threads.forEach(function(thread) { // スレッド内のメール一覧を取得 var messages = thread.getMessages(); // メールを一つずつ取り出す messages.forEach(function(message) {

試したこと

var query = '("is:unread subject:お問い合わせ受付のお知らせ -label:転記済み")'; query += ' OR (- "RE")'; query += ' OR (- "Re")'; query += ' OR (- "FWD")'; query += ' OR (- "Fwd")';

考えられる方法としては、返信メールの件名で除外する、かと思い追記してみたりしたのですがダメでした。

初心者で大変申し訳ないのですが、助言をいただけると嬉しいです。
どうぞ宜しくお願いいたします。

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

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

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

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

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

sawa

2021/12/27 02:31

スレッド内の1件目(最初)のメールだけ対象ってことなら、 var messages = thread.getMessages()[0] で取得できると思いますが、 それだと取りこぼしがありますかね?
0131

2021/12/27 08:12

こうするとmessages.forEach is not a functionのエラーが出てしまいます。。
sawa

2021/12/27 12:13 編集

そらすでに一つ取り出した状態なんで当たり前です。その部分のforEachは不用になります。 var message = thread.getMessages()[0] とした方がわかりやすかったですね。
0131

2021/12/28 02:34

解決いたしました! 初心者で全然わかっておらずすみません、 丁寧に教えていただき、本当にありがとうございました!!
sawa

2021/12/28 03:46

良かったです。そしたらご自身で解決したコードを回答に入れて質問をクローズしてください。
guest

回答1

0

自己解決

// スレッドを一つずつ取り出す threads.forEach(function(thread) { // スレッド内のメール一覧を取得 var message = thread.getMessages()[0]

こちらでスレッド内の1件目のみ対象とすることができました。
助言をいただき、本当にありがとうございました。

投稿2021/12/28 06:54

0131

総合スコア5

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問