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

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

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

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

Google Apps Script

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

Q&A

解決済

1回答

2229閲覧

GMailの検索機能の解釈について分かりません

ixeris

総合スコア12

Gmail

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

Google Apps Script

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

0グッド

0クリップ

投稿2019/02/01 07:22

編集2019/02/01 09:17

GMailの検索窓とGmailApp.searchについて教えてください。

これらで"in:inbox after:2019/02/01"とすると
2018/12/25のメールに2019/02/01のメールがぶら下がっているスレッドも
引っかかってくるのですが、

"in:inbox after:2019/02/01 label:AAA"
というようにラベル(スレッドにしかない機能)の条件を追加すると
2018/12/25のメールに2019/02/01のメールがぶら下がっているスレッドが
引っかかってこなくなります。
(もちろんこのスレッドにもラベルAAAはついています。)

スレッドにしか対応しないラベルの条件を追加すると、
「受信トレイにあり、スレッド内のいずれかのメールの日付が2019/02/01以降のスレッド」
が、
「受信トレイにあり、スレッド先頭メールの日付が2019/02/01以降のスレッド、で、ラベルAAAのついたスレッド」
という解釈に切り替わるのでしょうか。
いまいちどういう動作をする機能なのか分かりません。

https://developers.google.com/apps-script/reference/gmail/gmail-app#search(String)

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

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

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

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

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

papinianus

2019/02/01 07:33

in:inbox label:AAAとすると、何もヒットしなくなります。 in:inbox(受信トレイ)がラベルのようだが、特殊な地位にあるせいで挙動が掴めません。 一旦、in:inboxを外してご確認いただけませんか? (あと、ラベルはスレッドじゃなくてメールにも付与できるはずです)
ixeris

2019/02/01 07:39

ありがとうございます。 さっそくinboxを外してみましたが挙動は同じでした。 "after:2019/02/01 label:AAA" また、スレッドに入った個別のメールに対してラベルを設定する方法が分かりません。 GMailの画面でも個別につける方法がなさそうですし プログラミングの方でも GmailLabel.addToThread(thread) GmailLabel.addToThreads(threads) しか見当たりません。 何か特殊なAPIを追加するのでしょうか。
papinianus

2019/02/01 07:42

個別については、Gmailの(デフォルトで)右上にある歯車アイコンから、設定を開き、「全般タブ」の「スレッド表示」から表示を切り替えると確認/設定可能です。 こちらでも、再度確認しますが、in:inboxはなくても目的に障害はないと思っていいですか? なおプログラムのほうは、google app scriptでスレッドを検索する機能しか提供されていません。それと個別メールにラベルが付くかは、区別した話となります。
ixeris

2019/02/01 07:49

メール個別のラベルは、そもそもスレッド表示をオフにした時でないと使えないのですね。 スレッド表示は必須なので気づきませんでした。残念ながら使えません。 >in:inboxはなくても目的に障害はない 受信トレイから プログラムで用の済んだメールを「ラベルをつけてからアーカイブする」という形で フォルダ移動の真似事をしたいので、現状in:inboxは必須です。
ixeris

2019/02/01 07:50

(どちらにしろ、メール単位にラベルをつけたいという希望はありません。)
ixeris

2019/02/01 08:03

突然、"in:inbox after:2019/02/01 label:AAA" が正常に動作するようになりました。(GMail検索窓でも自作プログラム(GAS)でも) この間にしたことというと、一旦「設定」でスレッド非表示にしてからスレッド表示に戻しただけで、 メールデータやプログラム(GAS)等はいじっていません。
papinianus

2019/02/01 08:05

in:inboxが必要だと解決はむずかしいのかもしれないですが。検証したので結果を。 あるスレッドがAAAというラベルをもち、送信日が12/1,12/2,12/2,12/3という4つのメールを含むときに「after:2018/12/03 label:AAA」で検索すると、GMAILの画面ではこのスレッドが拾われます。ちなみに意図してですが、個別メール画面で、最後の12/3以外はAAAのラベルを持たないようにしています(それでもスレッド表示にするとAAAのラベルがスレッドについているように表示されます)。
papinianus

2019/02/01 08:15 編集

> 突然、"in:inbox after:2019/02/01 label:AAA" が正常に動作するようになりました。(GMail検索窓でも自作プログラム(GAS)でも) 私も今この現象に遭遇しました。さっきまでin:inboxとlabelを併存させるとヒットなしだったのに、今や当初の検索式が動作するようになりました。 私はもともと個別メール設定にしていて、おっしゃるような切り替えは多用しましたが、プログラムやたまたま新着メールもありませんでした。 ラベルの文字列の入力ミスだったと信じたい…
ixeris

2019/02/01 08:18

(自分を信用していないので)条件はこぴぺでやっているので、私の方では入力ミスはありません。
papinianus

2019/02/01 08:19

いや、そちらはコードでも検証しておられるので、入力ミスでないことは明らかだと思ってます。しかし、そんな設定起因で動作がかわったんでは、信用できないので…
ixeris

2019/02/01 08:28

正常に動作するようになってしまったので 何をどうすることもできなくなってしまいました。 また次のメールが来たらおかしくなるのかもしれません。
guest

回答1

0

ベストアンサー

Gmailではラベルはメッセージ単位にもっています。
スレッドについているラベルはメッセージ単位にもっているラベルの集合体と考えていただくのがわかりやすいです。

一つのスレッドに対して
2018/12/25 label:AAA
2019/02/01 (ラベルなし)
という2つのメッセージがぶらさがっている場合に、スレッドは見かけ上、label:AAAの状態になります。

検索はメッセージ単位に行われるため、label:AAAと検索したり、after:2019/02/01すると、そのメッセージをもっているスレッドが引っかかってくるのですが
after:2019/02/01 label:AAA
とすると、そのようなメッセージは存在しないため、該当のスレッドがひっかかってきません。

これはGmailAPIを実行すればよくわかります。
User.messages:listにて、userIdにメールアドレス、qにlabel:AAAと条件を入力した場合に、2019/02/01のメッセージはひっかかってこないのではないでしょうか。
User.threads:listでも試してみてください。

投稿2019/02/01 08:12

編集2019/02/01 08:15
macaron_xxx

総合スコア3191

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

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

macaron_xxx

2019/02/01 08:16

要は検索はメッセージ単位におこなわれますよ。ということです。
ixeris

2019/02/01 08:32

ありがとうございます。 メール個別のラベル機能は使わない(スレッド表示で固定)ため、 スレッドの中身のメール単位でラベルがついていたりついていなかったりという状況自体はありません。 (上では個別にもつけられる旨を教えていただいたのみです。) 上に書いたのですが、 突然、"in:inbox after:2019/02/01 label:AAA" が正常に動作するようになりました。(GMail検索窓でも自作プログラム(GAS)でも) この間にしたことというと、一旦「設定」でスレッド非表示にしてからスレッド表示に戻しただけで、 メールデータやプログラム(GAS)等はいじっていません。 正常に動作するようになってしまったので 何をどうすることもできなくなってしまいました。 また次のメールが来てスレッドができたらそのスレッドだけおかしくなるかもしれません。
macaron_xxx

2019/02/01 08:41

スレッド表示していても、あくまでラベルはメッセージ単位につきます。 例えば、 2019/01/31に届いたメールAに対してラベルAをつけます。 (ここでは、スレッドについたように見えますが、あくまでメールAに対してラベルAがつきます。) その後、2019/02/01にメールBが届き、メールAと同一のスレッドになったとします。 このとき、メールBにラベルAがつくとは限りません。 (見かけ上はスレッド表示ですので、同一スレッドにいるメールBもラベルAがついているように見えます。) これは実験して確認することができます。 スレッド表示にした状態で、 送信先AからメールAを送信した後、ラベルAを付与。 その後、送信先AからメールBを送信。 (同一スレッドにするために、同一件名同一本文にしておくのがよいでしょう。) 見かけ上は、メールAにメールBがぶらさがり、ラベルAがついている状態に見えます。 ここで、スレッド化の表示を解除してみてください。 メールAにはラベルAが、メールBにはラベルがついてないと思います。
macaron_xxx

2019/02/01 08:45

突然、動き出したとのことですが、おそらくラベルをつけ直すことをどこかのタイミングでしたのだと思いますよ。
ixeris

2019/02/01 08:50

ラベルがメール個別につく件と、 タイミング(あとからぶら下がってきた)により中のメールにはラベルがつかない件についてよく分かりました。 ありがとうございます。
ixeris

2019/02/01 08:51

ラベルの付け直し自体は、 再試行の度に毎回同じ手順でGMail上で手動で必ず行っています。(スレッド表示にて)
ixeris

2019/02/01 08:52

途中の手順で不手際があったのかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問