GASで特定のGmailをスプレッドシートに抜き出しています。
現在デバック中で本文を分割して表示させることを実施しています。
まず本文の中にある「ご予約名」を隣の列に抜き出すことを実施していますが、うまくいかなかったためご相談させていただきます。37行目のコードで本文が抜き出されますが、ここからご予約名を抜き出すことはできますでしょうか?
37 mymsg[i][4] = msgs[i][j].getPlainBody()
【調べたこと】
fetchDataが使えそうでしたが、いろいろ試しましたがエラーがでました。
下記コードはエラーでした。fetchDataは使えないのでしょうか?
mymsg[i][4] = fetchData(msgs[i][j].getPlainBody(),'ご予約','\r');
GAS
1function contact_Gmail() { 2 var rowNumber = 2; 3 var mysheetname = 'Gmail解析_' + Utilities.formatDate(new Date(), 'JST', 'yyyyMMddHHmmss'); 4 5 var GmailSS = SpreadsheetApp.create(mysheetname); 6 var mySheet = GmailSS.getSheets()[0]; 7 mySheet.setName(mysheetname); 8 mySheet.getRange(1,1).setValue("日時"); 9 mySheet.getRange(1,2).setValue("送信元"); 10 mySheet.getRange(1,3).setValue("件名"); 11 mySheet.getRange(1,4).setValue("本文"); 12 mySheet.getRange(1,5).setValue("ご予約"); 13 mySheet.getRange(1,6).setValue("お名前"); 14 mySheet.getRange(1,7).setValue("電話番号"); 15 mySheet.getRange(1,8).setValue("メールアドレス"); 16 17 var newfolder = DriveApp.createFolder(mysheetname); 18 19 var searchQuery = 'subject:(”予約が確定" OR "finalized") '; 20 var threads = GmailApp.search(searchQuery, 0, 200); 21 22 var mymsg=[]; 23 24 var msgs = GmailApp.getMessagesForThreads(threads); 25 26 for(var i = 0; i < msgs.length; i++) { 27 mymsg[i]=[]; 28 for(var j = 0; j < msgs[i].length; j++) { 29 mymsg[i][0] = msgs[i][j].getDate(); 30 mymsg[i][1] = msgs[i][j].getFrom(); 31 mymsg[i][2] = msgs[i][j].getSubject(); 32 var nbsp = String.fromCharCode(160); 33 mymsg[i][3] = msgs[i][j].getPlainBody().replace(/<("[^"]*"|'[^']*'|[^'">])*>|nbsp/g,'').replace(/&; | /g,'').substring(0,50000); 34 mymsg[i][4] = fetchData(mymsg[i][3],'Appointments:','Name'); 35 } 36 } 37 if(mymsg.length>0){ 38 GmailSS.getSheets()[0].getRange(2, 1, i, 4).setValues(mymsg); //シートに貼り付け 39 } 40} 41 42function fetchData(str, pre, suf) { 43 var reg = new RegExp(pre + '.*?' + suf); 44 var data = str.match(reg)[0] 45 .replace(pre, '') 46 .replace(suf, ''); 47 return data; 48}
回答3件
あなたの回答
tips
プレビュー