日々の雑感

EC運営でよくある注文番号のメールのラベル付けの悩みをGASで解決

投稿日:

新しいGメールを受信したとき、本文中に過去メールと同じ注文番号があったなら、その過去メールにつけたラベルと同じにする・・・言葉での説明さえも難しい・・・ということがしたかったのですが、難しすぎてフィルタの限界を超えるので、GASのスクリプト制作をChatGTPに頼んだら、すぐにできた。
素晴らしい。。

// Gmailで受信したラベルが全くついていない新メールの本文に「(例)ご注文番号: 121220」という内容があれば、

// 過去に受信したメールのタイトル「(例)ご注文(#121220)」を検索し、ヒットしたら、過去メールについているラベルと同じものを新メールにつける

// ラベルを新しいメールに適用する際に「amazon」「other」のラベルが含まれていたら除外する

function applyLabelsToNewEmails() {

  // 次の条件を満たすメールスレッドを最大50件取得します:

  // 1.「受信トレイ」

  // 2.amazon 等のラベルは付いていない

  // const threads = GmailApp.search("(label:inbox OR label:楽天 OR label:Yahoo) -label:{楽天 Yahoo} is:unread", 0, 50);// 最大50件のスレッドを取得

const threads = GmailApp.search("(label:inbox) -label:{amazon other} is:unread ", 0, 50);// 最大50件のスレッドを取得

  threads.forEach((thread) => {

    const messages = thread.getMessages();

    messages.forEach((message) => {

        const body = message.getPlainBody();

        const subject = message.getSubject();

        // メール本文またはタイトルに注文番号が含まれているかチェック

        const bodyMatch = body.match(/ご注文番号:\s*(\d+)/);

        const subjectMatch = subject.match(/\[(\d+)\]/);

        const orderNumber = bodyMatch ? bodyMatch[1] : subjectMatch ? subjectMatch[1] : null;

// console.log(orderNumber)

        if (orderNumber) {

          // 過去のメールを検索

          const searchQuery = `subject:"ご注文(#${orderNumber})" OR [受注番号] ${orderNumber}"`;

          const pastThreads = GmailApp.search(searchQuery);

// console.log(searchQuery)

          if (pastThreads.length > 0) {

            const pastLabels = pastThreads[0].getLabels();

            // 除外するラベルリスト

            const excludedLabels = ["amazon"];

            // ラベルを新しいメールに適用(除外リストを考慮)

            pastLabels.forEach((label) => {

              if (!excludedLabels.includes(label.getName())) {

                thread.addLabel(label);

              }

            });

          }

        }

    });

  });

}

-日々の雑感

執筆者:

関連記事

no image

風邪薬

風邪が治らないので、昨日から風邪薬を変えてみた。 風邪薬って多くのメーカーからいろんな銘柄が出ているが、違うんだろうか? そこで、それぞれの薬の主成分を調べてみた。 主成分といっても、微量で効く薬もあ …

no image

聖夜

旬の味覚、かぶら寿司が食べてくなったので、会社帰りにスーパーへ、一人で。 かぶら寿司、ひとパック280円のみを手に、レジに並ぶ。 あれ? なんか、いつもと雰囲気が違う。 チキンやらオードブルやパーティ …

no image

忘れ物

朝。 最近、忘れ物が多いので、自分の体を上から順番にチェックするように、習慣付けている。 髪、変じゃない(変じゃなければ良いのだ)。 ひげ、剃った。 歯、磨いた。 ネクタイ、締めた(3ヶ月に一度、忘れ …

no image

今日の天気予報は、雨のち曇り

さあ、今日は自転車で行こうかな。やめといたほうがいいかな。 最近、朝が楽しくてしょうがない。 出勤時間が近づくとワクワクする。 会社が好きだからではない。仕事が楽しいからでもない。 単純に、「自転車通 …

no image

口内炎

昨日は、研修とその後の打ち上げ飲み会に参加。 勉強になり、かつ楽しかった。 しかし終わって気づいた、昨日は無かったはずの、口内炎ができている。 私の場合、口内炎ができるのは、体調不良のときと、精神的ス …