<スポンサーリンク>

楽天の購入履歴の一覧作成プログラム!gmailから作成スプレッドシート(エクセル)で作成

GAS
この記事は約8分で読めます。
コピーボタン
記事のタイトルとURLをコピー

今までどれだけ無駄使いしてきたかな~。。

ということで、今回は「楽天の購入商品一覧」を作成するプログラムを作成しましたので、
展開していきたいと思います!

スポンサーリンク

楽天の購入商品一覧作成プログラム!Gメールから作成

<スポンサーリンク>

楽天の購入商品一覧を作成するプログラムを作成しましたので、
皆さんに紹介していきたいと思います!

ただし、今回の方法は、gmailの購入確認メールを検索して一覧を作成するプログラムになりますので、

・gmailで、「注文内容ご確認(自動配信メール)」を受け取っている人限定のプログラムになります。

どんなことが出来るの?

できることは、gmailに来た注文内容のご確認(自動配信メール)を検索し、

・メール受信日
・商品名
・金額
・商品リンク
・メールリンク

を、作成できます。

僕の検索結果は下記の通りで、2021/10/10にホースを1,823円で買っていることがわかります。

また、いつからのメールを検索するかを設定することもできます。

プログラムを紹介

実際のプログラムは下記のとおりです。

↓よりプログラムをコピーしてお使いください。

プログラムの実行には承認が必要です。
下記の通り、プログラムの承認をお願いいたします。

プログラムの実行方法

実行ボタンをクリック

プログラムの承認を続行
アカウントを選択
左下の灰色の小さい「詳細」をクリック
○○(安全ではないページ)に移動をクリック
許可をクリック

もう一度実行をクリック

プログラム紹介

正直、非常に汚いプログラムです。笑

もっときれいに書けるはずです。

また、商品名を取り出すのが難しかったので、無理やりとってます。

function MailRist() {

  var book = SpreadsheetApp.getActiveSpreadsheet()
  var sheet1 = book.getSheetByName("メール確認")

  //console.log(book);

  book.toast("対象メール検索中 ※少々時間がかかります。", "実行中", -1)

  //  Utilities.formatDate( date, 'Asia/Tokyo', 'yyyyMMdd: hhmmss'));

  const dateafter = Utilities.formatDate(sheet1.getRange(1, 2).getValue(), 'Asia/Tokyo', 'yyyy/MM/dd');
  const fr = sheet1.getRange(1, 4).getValue()
//  const KENSU = sheet1.getRange(1, 6).getValue()

  var findkey = "after:" + dateafter + " FROM:" + fr
  var kensakukekka = GmailApp.search(findkey, 0, 500);
  var Msg = GmailApp.getMessagesForThreads(kensakukekka);//二次元配列

  var OutputMsg = [];
  var maxc = 0;

  book.toast("findkey", 5, 5)

  /* 各メールから日時、送信元、件名、内容を取り出す */
  for (var i = 0; i < Msg.length; i++) {

    if (i % 5 == 0) { book.toast("スクリプトを実行中です。" + i + "/" + Msg.length, "実行中", 5) }

    for (var j = 0; j < Msg[i].length; j++) {


      var data = Msg[i][j].getBody().split("\n");
      for (var l = 0; l < data.length; l++) {
        if (data[l].indexOf('支払い金額') != -1) {
          var body = data[l];

          var S_num = body.indexOf('+1"><b>');
          var E_num = body.indexOf('(円)');

          var body = body.substring(S_num + 7, E_num);


        }

        if (data[l].indexOf('円 x ') != -1) {

          if (data[l - 3].indexOf('href') != -1) {
            var date = data[l - 3];
          } else if (data[l - 4].indexOf('href') != -1) {
            var date = data[l - 4];
          } else if (data[l - 5].indexOf('href') != -1) {
            var date = data[l - 5];
          } else if (data[l - 6].indexOf('href') != -1) {
            var date = data[l - 6];
          } else if (data[l - 7].indexOf('href') != -1) {
            var date = data[l - 7];
          } else if (data[l - 8].indexOf('href') != -1) {
            var date = data[l - 8];
          } else if (data[l - 9].indexOf('href') != -1) {
            var date = data[l - 9];
          } else if (data[l - 10].indexOf('href') != -1) {
            var date = data[l - 10];
          } else if (data[l - 11].indexOf('href') != -1) {
            var date = data[l - 11];
          } else if (data[l - 12].indexOf('href') != -1) {
            var date = data[l - 12];
          } else {
            var date = data[l - 13];
          }

          //console.log(date)
          var S_num = date.indexOf('\">');
          var E_num = date.indexOf('</a');

          var data1 = date.substring(S_num + 2, E_num);

          var S_num = date.indexOf('href=');
          var E_num = date.indexOf('style');

          var data2 = date.substring(S_num + 6, E_num - 18);


        }

      }


      //[3]データ


      var date2 = Msg[i][j].getDate();
      var from = Msg[i][j].getFrom();
      var subj = Msg[i][j].getSubject();
      /*var body = Msg[i][j].getBody().slice(0,100000);*/
      var perm = kensakukekka[i].getPermalink();

      OutputMsg.unshift([date2, data1, body, data2, perm])

    }


    //    OutputMsg[0] = ([subj, perm]).concat(OutputMsg[0])

    //[date,from,subj,body,perm]
  }

  for (var i = 0; i < OutputMsg.length; i++) {
    var cn = OutputMsg[i].length
    if (cn > maxc) { maxc = cn }
  }

  for (var i = 0; i < OutputMsg.length; i++) {
    OutputMsg[i].length = maxc
  }

  console.log(OutputMsg.length)

  if (Msg.length > 0) {
    var mySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('メール確認');
    mySheet.getRange(3, 1, OutputMsg.length, maxc).setValues(OutputMsg);
  }

  Browser.msgBox("完了")

}

まとめ

商品名を取ってくるのに少々苦労しましたが、どうにか一覧を作成することが出来ました。

ぜひ、使ってみてください!

コピーボタン
記事のタイトルとURLをコピー
GAS家計の計算
スポンサーリンク
スポンサーリンク
nujonoaをフォローする
nujonoa_blog

コメント欄

<スポンサーリンク>
タイトルとURLをコピーしました