IT仕事

楽天の注文メールのタイトルを変更して転送

投稿日:2018年5月16日 更新日:

3か月以上ぶりの投稿。大変ご無沙汰である。

楽天からのご注文メールはGmailに転送しているのだが、その日のうちに注文が1件以上あった場合は、メールがばらけないで一つのスレッドにまとまってしまう。
できれば、バラしたい。
ということで、調べたところ、GoogleAppScriptでできそうだとわかった。
さっそく、以下のブログ記事を参考にして、作ってみた。作者さまに感謝。

GMailで受信したメールを翻訳して転送 – 開発者メモ

以下、ほぼ上記のリンク先のコピーで、作りましたのですが。恐縮です。

変えたところといえば、タイトルに日付を入れるようにしたのと、翻訳処理を外したのと、置換処理を少々変えたくらいか。
追記:あと、なぜか深夜の処理で転送メールが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();
  }
}

満足である。

-IT仕事

執筆者:

関連記事

no image

オープンソース・又は安価なECサイト比較

近々来そうなショッピングサイト構築仕事。そのために一日かかって調べた。 忘れないようにメモメモ。 今回の仕事の必要要件 ・管理者がバックエンドから顧客の注文データを投入できる(電話注文・FAX注文対応 …

no image

FileMaker Pro 12 での汎用カウントアップボタンの作り方

前日に続き、調子に乗ってFileMaker Pro 12ネタ。 フィールド名を名前で設定[Get ( スクリプト引数 );GetField(Get ( スクリプト引数 ))+1] のようなスクリプトを …

no image

イーモバイル製のHTC AriaはIIJ-Mioで使えなかった

オークションで購入したHTC Ariaだが、IIJ-Mioのキャリアでは使えないみたい。 APNを登録したり、色々試してみたのだが、3Gを介したネットにはつながらなかった。 エラーは出ないのにね。 A …

no image

「〇〇屋商店」のラベルを付けたGmailメッセージからGASで件名と本文の一部を正規表現で取り出してスプレッドシートに格納

仕事でGoogle App Script(GAS)を使うケースが出てきそうなので、休日なれど、自主勉してみた。 やりたいことは、オンラインショップの注文メールの中から、必要な事項を取り出して、スプレッ …

no image

まだやってる、IT講師。

今日はWordでPOPを作るセミナー。 いわゆる「おばちゃん」相手。 楽しい。 なかに、とても入力が苦手な人が一人、「産業会館」という字を、「惨状会館」と入力して、しかしどう直してよいか分からなくて悩 …