今までどれだけ無駄使いしてきたかな~。。
ということで、今回は「楽天の購入商品一覧」を作成するプログラムを作成しましたので、
展開していきたいと思います!
楽天の購入商品一覧作成プログラム!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("完了")
}
まとめ
商品名を取ってくるのに少々苦労しましたが、どうにか一覧を作成することが出来ました。
ぜひ、使ってみてください!
コメント欄