前提・実現したいこと
GASで、Gmailから下記のようなメールを読み込み、
スプレッドシートにお問い合わせ/日時/件名/本文/リンク の列ごとに書き出すプログラムを作成しています。
==================================
[お問い合わせ]【yyyy/mm/dd hh:mm】【件名】
本文: (~~~文章~~~)
メールリンク: http:~~
==================================
こちら、以下のように1通のメールに複数のお問い合わせが記載された場合も、
それぞれ別に取得したいのですが、やり方がわかりません。
==================================
[お問い合わせ]【yyyy/mm/dd hh:mm】【件名】
本文: (~~~文章~~~)
メールリンク: http:~~
==================================
[お問い合わせ]【yyyy/mm/dd hh:mm】【件名】
本文: (~~~文章~~~)
メールリンク: http:~~
==================================
繰り返しをもう一つ入れ子し、正規表現で問い合わせの形にマッチしなくなるまで繰り返しなど考えたのですが、うまくいきませんでした。
申し訳ありませんが、ご助力いただけないでしょうか?
該当のソースコード
var myMsgs = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する →二次元配列で格納
var valMsgs = [];
/* 正規表現 /
var reg2 = /(?<=[).+?(?=])/; //問い合わせ
var reg3 = /(?<=\【).+?(?=\】)/; //投稿日時
var reg4 = /(?<=\】.【).+?(?=\】)/; //件名
var reg1 = /(?<=本文:)[\s\S]+(?=メールリンク:)/; //本文
for(var i=0;i<myMsgs.length;i++){
for(var j=0;j<myMsgs[i].length;j++){
var mainBody = myMsgs[i][j].getPlainBody(); var honbun = mainBody.match(reg1); var honbun2 = mainBody.match(reg2); var honbun3 = mainBody.match(reg3); var honbun4 = mainBody.match(reg4);
valMsgs.push([honbun,honbun2,honbun3,honbun4]);
}
}
//スプレッドシートに出力
var rows = valMsgs1.length;
sh1.getRange(4,1,rows,4).setValues(valMsgs);
}
回答2件
あなたの回答
tips
プレビュー