稲葉純(33)21この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。ScriptでGmailの「特定のフィルターにマッチした受信メール」のみをチャットに転送するスクリプトを作成しようとしました。その際、フィルターにマッチする、と言う動作に対する誤解から少しはまったのでメモしておきます。結論を言うと、「GmailApp#searchで検索できるのはメールではなくスレッドなので、クエリにマッチしていないメールが返って来る可能性がある」です。ScriptでGmailのメールを検索する際には以下のように記述します。Developers問題はこの検索が、厳密には「メールに対する検索」ではなく、「スレッドに対する検索」だということです。(この動作はGmailをWeb画面から直接操作しても同じです。)スレッドとは、メールの返信によるやりとりで受信した複数のメールを1つのフォルダのような単位でまとめたものです。この構造のため、特定のメールにだけマッチするクエリを入力しても、スレッド内のいずれかのメールにクエリがマッチすると、スレッド内のメールが全て返却されてしまいます。以下のようなイメージです。上記例では「黄色いメール」だけを取得しようとしていますが、「黄色いメールと一緒にスレッドに入っている赤や青のメール」まで取得できてしまっています。何が問題なのか例えば、初めに記載したような「特定のフィルターにマッチしたメールのみをチャットに転送するスクリプト」を作るとします。フィルターの設定は、「送信元がAさんだった場合」とします。メールの送受信の流れが以下だった場合について考えてみます。Aさんがメールを送信する。(TO:自分、CC:Bさん)Bさんが1のメールに返信する。(TO:Aさん、CC:自分)この時、スレッドには以下のメールが含まれます。Aさんが自分宛てに最初に送ったメールBさんがAさん宛てに返信したメールこの状態で、「Aさんが自分宛てに送ったメール」を検索すると、自分宛てではないBさんが送ったメールも取得できてしまいます。Scriptから提供されている機能だけではメール単位での検索はできないようでした。そのため、自力でフィルタを実装する必要があります。絞り込みをしています。//本文に「重要」が含まれているメールのみを対象とする。//本文に「このメールは見なくても良いメールです。」が含まれていないメールのみを対象とする。if(body.match("このメールは見なくても良いメールです。//送信先や送信元は単純にメールアドレスの文字列ではなく「稲葉純<inaba@example.com>のようなフォーマットです。//送信先のドメインが「example.com」のメールのみを対象とする。//送信元のアドレスが「info@example.com」でないメールのみを対象とする。}これくらいならなんとかなりますが、GmailApp#searchに渡せるクエリと同等の検索機能を実装しようとするとなかなか骨が折れそうです。スクリプトの実行は5分間でタイムアウトしてしまうため、処理対象の件数を減らすために自力でフィルタを実装してもなおGmailApp#searchを利用する際にはクエリでの絞り込みを行うべきです。Scriptでの動作は変わりませんでした。「変数にGmailのフィルタ用のクエリを入力しておくと、フィルタにマッチしたメールがチャットに転送されるアプリ」はなかなか骨が折れそうだと思いました。厳密にはGmailでの検索は「スレッドに対する検索」なので、実現出来てはいるのですが、やはりフィルタはメールに対してかけたいです。実装する場合、まず上記のように複雑でないフィルタを実装し、もし複数条件で使用したくなった場合は転送用のスクリプトを複数作成するのが簡単かなと思いました。Scriptについて色々紹介しています。Developers.IO私からは以上です。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。〜ITエンジニアのお仕事とホンネ〜1月30日に新卒向けの会社説明会〜ITエンジニアのお仕事とホンネ〜を開催します。濱田孝治80EKS初心者の方向けに、EKS周辺のAWSリソースがどのように関連して動作しているのかをステップバイステップでEKSCTLが担っている役割を中心に説明しました。菊池修治45こんにちは、菊池です。VPNの冗長化について、最近何度か続けて社内で質問を受けましたのでまとめようと思います。大前諒祐26MediaLiveでの配信終了時に自動でアーカイブファイルをMediaConvertで変換する仕組みを作ってみました。武田隆志1179このエントリは、2018年、2019年に公開したAWS全サービスまとめの2020年版です。これまではいくつかに分割して公開していましたが、1エントリにまとめてほしいという要望をもらっていたため、今年は1エントリに集約してみました。クラスメソッドの関連会社であるアノテーション株式会社の研修として依頼を受け、チームと心理的安全性、それに礼節というテーマで話をしてきました。CAFEのサービスが「LINEアプリ」として利用できるようになりました。これまではLINEのトークから利用する形でしたが、LINEサービス内から利用できるようになりました。これまでより便利に、シームレスにご利用いただけます。Cafe328件のシェア(そこそこ話題の記事)インフラ未経験の私が内定から入社までに読んだ技術書11冊ブログ記事2020年01月16日Yui328インフラ未経験で入社した私がインフラを勉強するために読んだ技術書11冊を感想とともにまとめました。濱田孝治272「ふわわぁ、眠いな。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。