

抜き取りたいのは以下のOOOOOOOOO部分です。

[code]

    商品 :
    ------------------------------------------------------------------
    OOOOOOOOO
    
[/code]

メールではこのように商品：の後に点線を挟んで商品名が来ます。matchメソッドを使用し、ほかの部分は抜き出せるのですが、商品の後に商品名が来ない仕様になっているので抜き出し方がわからないです。さらにいろいろな種類の商品があり、matchメソッドを使ってもスプレッドシートが横に広がるだけです。なのでOOOOOOOの特定の行だけを抜き出す方法が知りたいです。

点線の後に来る行 (実際の商品名) を指定して、抜き出しスプレッドシートに書き込ませたいです。

使用しているスクリプトは以下の通りです：

[code]

    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); 
    
        }  
    }
    
[/code]


CC BY-SA 4.0
2019-07-03T07:23:16.453
56343
2019-07-03T10:01:34.233
34932
question
google-apps-script
GmailからGASを使って特定の部分を抜き出す方法をしりたいです


上記フォーマットの `0000...` 部分は、以下のような正規表現で取得することができます。

[code]

    /商品 :\n-+\n(.*)/
    
[/code]

これは、 `\n` が改行を意味することを利用しています。


CC BY-SA 4.0
2019-07-03T08:32:19.457
56348
2019-07-03T10:01:34.233
2019-07-03T10:01:34.233
29826
29826
56343
answer