3か月以上ぶりの投稿。大変ご無沙汰である。
楽天からのご注文メールはGmailに転送しているのだが、その日のうちに注文が1件以上あった場合は、メールがばらけないで一つのスレッドにまとまってしまう。
できれば、バラしたい。
ということで、調べたところ、GoogleAppScriptでできそうだとわかった。
さっそく、以下のブログ記事を参考にして、作ってみた。作者さまに感謝。
以下、ほぼ上記のリンク先のコピーで、作りましたのですが。恐縮です。
変えたところといえば、タイトルに日付を入れるようにしたのと、翻訳処理を外したのと、置換処理を少々変えたくらいか。
追記:あと、なぜか深夜の処理で転送メールが2件続くことが、たまにあった。最下行付近の「//既読にする threads[i].markRead();」が有効だった。
function Gmail_translate(){ // 転送先アドレス var fw_addr = 'hogehoge@gmail.com'; // ラベル"0ROrder" var labelR = GmailApp.getUserLabelByName("0ROrder"); // ラベル"0ROrder"が付いたメールスレッド var threads = labelR.getThreads(); //Logger.log("threads.length = " + threads.length); for (var i in threads) { // スレッド表示がONになっているかもしれないので、スレッド毎に各メールを取得する var messages = threads[i].getMessages(); for (var j in messages) { var message = messages[j]; // 既読メッセージに対しては何もしない if (!message.isUnread()) continue; // 発信者, 件名, 本文, 送信日時を得る var date = new Date(); //レスポンスから送信日時を取り出す var from = message.getFrom(); var subject = message.getSubject() + date; //受信した際にスレッドが重ならないようにタイトルに日付を追加 var body = message.getPlainBody().replace(/\r/g, "").replace(/\n\n/g, "\n").replace(/\n\n/g, "\n"); // bodyを加工 // "----"で始まる行はカット //#body = body.replace(/^----.*$/mg, ""); //←これだと空行が残る body = body.replace(/----[^\n]+\n/g, ""); body = body.replace(/本メールはお客様のご注文情報が楽天[^\n]+\n/g, ""); body = body.replace(/される、自動配信メールです。[^\n]+\n/g, ""); body = body.replace(/をもって売買契約[^\n]+\n/g, ""); body = body.replace(/本メール(店舗様向け[^\n]+\n/g, ""); body = body.replace(/R-Backofficeでは[^\n]+\n/g, ""); body = body.replace(/この度は楽天市場内の[^\n]+\n/g, ""); body = body.replace(/ご利用いただきまして、[^\n]+\n/g, ""); body = body.replace(/■個人情報の扱い[^\n]+\n/g, ""); body = body.replace(/==========[^\n]+\n/g, ""); body = body.replace(/──────[^\n]+\n/g, ""); // メール送信 GmailApp.sendEmail(fw_addr, subject, body); } // スレッドの全メールからラベル"R"を剥がす threads[i].removeLabel(labelR); //既読にする threads[i].markRead(); } }
満足である。