メール内容からピックアップ集計したい
JCBのデビットカードを利用すると、その都度以下のようなメールが届く。
明細情報はMyJCBサイトへログインすれば分かるしCSV出力もできるものの、毎月ファイルを持ってきて集計するのが面倒だった。
そこで、、Gmail宛に届くこのメール内容から「ご利用日時(日本時間)」「ご利用料金」「ご利用先」行を抜き出して、Googleスプレッドシートに書き出すGoogle Apps Script(GAS)をChatGPTに作らせてみた。
ChatGPT宛に使ったキーワードは「以下のメール内容」「GScript」「Gmailの受信メール」「Googleスプレットシート」「以下のGScript」「以下のコード」「修正して」程度。
それで、以下のコードが出力できたのがなかなか素晴らしい。。。
function myFunction() { let spreadSheetByActive = SpreadsheetApp.getActive() let sheetByActive = spreadSheetByActive.getActiveSheet() let sheetByName = spreadSheetByActive.getSheetByName("デビット明細") var threads = GmailApp.search('subject:JCBデビットカードご利用のお知らせ'); for (var i = 0; i < threads.length; i++) { var messages = threads[i].getMessages(); for (var j = 0; j < messages.length; j++) { var body = messages[j].getBody(); var lines = body.split('\n'); var date = lines[6].split(' ')[1]; var amount = lines[7].split(' ')[1]; var location = lines[8].split(' ')[1]; var cell = sheetByName.getRange(i+2,1); cell.setValue(date); var cell = sheetByName.getRange(i+2,2); cell.setValue(amount); var cell = sheetByName.getRange(i+2,3); cell.setValue(location); Logger.log('ご利用日時(日本時間): ' + date); Logger.log('ご利用金額: ' + amount); Logger.log('ご利用先: ' + location); } } }
このコードを実行してスプレッドシート上には以下画像のような状態で出力されている。動作安定すれば、トリガーで日に1回自動実行かな。。。
この状態ではまだ、日時や料金が2バイト混在になっててシート上扱いづらい点、GAS自動更新時にすべての受信メールを毎回検索してしまう点など修正が必要なものの、ChatGPT使い込みたいな!と思わせてくれるには十分だった。
上記コードを、この一文「以下コードのamountから「円」を削除するように修正して」の下に貼り付けて、実行してみると…ヒントでなく答えがネタバレレベルで表示(汗
あああ、丸わかり。。。見直していこう(;´∀`)…