前提・実現したいこと
抜き取りたいのは以下のOOOOOOOOO部分です。
商品 : ------------------------------------------------------------------ OOOOOOOOO
メールではこのように商品:の後に点線を挟んで商品名が来ます。matchメソッドを使用し、ほかの部分は抜き出せるのですが、商品の後に商品名が来ない仕様になっているので抜き出し方がわからないです。さらにいろいろな種類の商品があり、matchメソッドを使ってもスプレッドシートが横に広がるだけです。なのでOOOOOOOの特定の行だけを抜き出す方法が知りたいです。
点線の後に来る行 (実際の商品名) を指定して、抜き出しスプレッドシートに書き込ませたいです。
該当のソースコード
使用しているスクリプトは以下の通りです:
function fetchContactMail() { var strTerms = '(is:unread "OOOOOOOOOO")'; var myThreads = GmailApp.search(strTerms, 0, 10); var myMsgs = GmailApp.getMessagesForThreads(myThreads); var valMsgs = []; for(var i = 0;i < myMsgs.length;i++){ valMsgs[i] = []; valMsgs[i][0] = myMsgs[i][0].getDate(); valMsgs[i][1] = myMsgs[i][0].getFrom(); valMsgs[i][2] = myMsgs[i][0].getSubject(); valMsgs[i][3] = myMsgs[i][0].getPlainBody().match(/OOOOOO(.+)/); valMsgs[i][4] = myMsgs[i][0].getPlainBody().match(/OOOOOOO(.+)/); valMsgs[i][5] = myMsgs[i][0].getPlainBody().match(/OOO(.+)/); valMsgs[i][6] = myMsgs[i][0].getPlainBody().match(/OOOO(.+)/); valMsgs[i][7] = myThreads[i].getPermalink(); myMsgs[i][0].markRead(); } if(myMsgs.length>0){ var mySheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('OOO'); var maxRow=mySheet.getDataRange().getLastRow(); mySheet.getRange(maxRow+1, 1, i, 9).setValues(valMsgs); } }
試したこと
matchメソッドで組むという認識で
valMsgs[i][6] = myMsgs[i][0].getPlainBody().match(/商品 :\n-+\n(.*)/); ```で組んでみたのですが情報が入ってこないです。
回答3件
あなたの回答
tips
プレビュー