前提・実現したいこと
google app scriptを使って下記のメールの内容をスプレッドシートへ正規表現する方法について、タイトル部分は
var reg title = new RegExp('【 タイトル 】 ' + '.*');
で抜き出すことができたのですが、メモ部分の
【 メモ 】
から
===================
までの下記のような太文字部分を抽出したいのですがやり方がわかりません。
改行を含む文字の抽出方法を調べたところ[\s\S]*を使うみたいなのですが試してみても正しく動作しません。
また、シートへ書き出す際は
sheet.getRange(row,1).setValue(Memo);
を使って書き出しています。
メール 内容
【 タイトル】 title
【 メモ 】 aaa
aaa
aaa
===================
タイトルのテキストを抽出するコード
1 2 var reg title = new RegExp('【 タイトル 】 ' + '.*'); 3 var title = body.match(regtitle)[0].replace('【 タイトル 】 ', '').replace('\r', ''); 4 5 6
(問題あり)メモ部分のコードを抽出するコード
1var Memo = new RegExp('"【 メモ 】 [\s\S]*="');
7/4追記
var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getRange(7, 21, sheet.getLastRow() + 1).getValues(); function getMail3(){ var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // シート名を記入。 var objSheet = objSpreadsheet.getSheetByName("シート取り込み”); var sheet = SpreadsheetApp.setActiveSheet(objSheet); var start = 0; // 取得するメールの最大件数 var max = 100; // Gmailのラベル名 var threads = GmailApp.search('label:シート取り込み is:unread',start,max); var Messages = GmailApp.getMessagesForThreads(threads); var row = sheet.getLastRow() + 1; // 見出しがあるためシートの1行目を固定 sheet.setFrozenRows(1); // メールから日時、要項を取り出す// for(var i = 0; i < Messages.length; i++) { for(var j = 0; j < Messages[i].length; j++) { var body = Messages[i][j].getPlainBody(); var reg title = new RegExp('【 タイトル 】 ' + '.*'); var title = body.match(regtitle)[0].replace('【 タイトル 】 ', '').replace('\r', ''); var Memo = new RegExp('【 ご要望など(任意) 】 '+'[\s\S]*?'+'='); var Memotext = body.match(Memo)[0]; // 同じメールを読み込まないように、メッセージを既読にする threads[i].markRead(); // それぞれの項目をセルを指定してスプレッドシートへ転記 sheet.getRange(row,1).setValue(title); sheet.getRange(row,2).setValue([Memotext]); row++ } } }
7/4追記エラーメッセージ
TypeError: Cannot read property '0' of null(行 35、ファイル「Mail-import」)
回答2件
あなたの回答
tips
プレビュー