前提・実現したいこと
以前、同じような質問をしましたが、そちらは解決し
新たな問題発生のため質問しました
今回は、google apps scriptを利用した際にメール本文側に問題があった時の対処法をお教えいただけたらと思い質問させていただきました。
※注意:今回のプログラムはメールに送信されたカード決算の合計を計算するために作成しようとしています。
メール本文から抽出したいのは、「利用日」「利用先」「利用金額」の三点です
発生している問題・エラーメッセージ
メール本文の中に読み取りたい箇所が二か所以上ある場合一番上のものしか読み込んでくれない
○○様 いつもカードをご利用頂きありがとうございます。 お客様のカードご利用明細の内容をお知らせいたします。 ご利用カード:○○ ◇利用日:2021/10/26 ◇利用先:○○商店 ◇利用取引:買物 ◇利用金額:990円 ◇利用日:2021/10/31 ◇利用先:○○デパート ◇利用取引:買物 ◇利用金額:680円
とあった場合、上の26日の支払い分しかスプレッドシートに抽出できない
該当のソースコード
googleappsscript
1function getPayments() { 2 // メール検索クエリを作成 3 const SUBJECT = 'お支払金額のお知らせ'; // 利用お知らせメールの件名 4 const SUBJECT2 = 'ご指定金額到達のお知らせ'; 5 const ADDRESS = 'statement@vpass.ne.jp'; // お知らせメールの送信元 6 const LABEL_NAME = '読み込み済み'; // ラベル名 7 const LABEL_NAME2 = 'カード利用明細メール'; 8 const QUERY = '-subject:' + SUBJECT + '-subject:'+ SUBJECT2 + ' from:' + ADDRESS + ' -label:' + LABEL_NAME + ' label:' + LABEL_NAME2 ; 9 10 // メールを検索 11 var threads = GmailApp.search(QUERY); 12 13 // 該当メールがあった場合 14 if(threads.length > 0) { 15 const KEYWDS = ['利用日:', '利用先:', '利用金額:', '利用取引:']; 16 const LABEL = GmailApp.getUserLabelByName(LABEL_NAME); 17 18 var msgs = GmailApp.getMessagesForThreads(threads); 19 var sheet = SpreadsheetApp.getActiveSheet(); 20 21 for(i=0; i<msgs.length; i++){ 22 // 本文を取得 23 Body = msgs[i][0].getBody(); 24 if(Body.match(/利用先:.*/)){ 25 26 27 sheet.appendRow([ 28 Body.match(/利用日:.*/g)[0].replace(KEYWDS[0], ''), 29 Body.match(/利用先:.*/)[0].replace(KEYWDS[1], ''), 30 Body.match(/利用金額:[\d,]+/)[0].replace(KEYWDS[2], ''), 31 ]); 32 }else{ 33 sheet.appendRow([ 34 Body.match(/利用日:.*/g)[0].replace(KEYWDS[0], ''), 35 Body.match(/利用取引:.*/)[0].replace(KEYWDS[3], ''), 36 Body.match(/利用金額:[\d,]+/)[0].replace(KEYWDS[2], ''), 37 ]); 38 } 39 // 処理の完了後、ラベルを付与 40 threads[i].addLabel(LABEL); 41 }; 42 43 // 料金列に通貨表示を適用 44 amounts = sheet.getRange('B:B'); 45 setCurrencyLayout(amounts); 46 } 47} 48 49// 選択セルを通貨表示にフォーマット 50function setCurrencyLayout(range) { 51 range.setNumberFormat('[$¥-411]#,##0'); 52}
回答に求めたいこと
この質問での最終目標は、
二個ある決済記録を両方別々にスプレッドシートに書き込む
この1点です。
補足情報(FW/ツールのバージョンなど)
改変元のソースコードは
こちらの
@shika-e様作成のクレジットカード利用明細を自動で作るGoogle Apps Script
引用テキストhttps://qiita.com/shika-e/items/2e88df51b748c85fbd15
となっています。
回答いただけたら幸いです。
よろしくお願いします。