GASを利用して、gmailの特定ラベルに振り分けられたメールの内容をスプレッドシートに出力するスクリプトを組んでいます。
基本的に差出人や宛先などは出力できましたが、以下ような本文の場合、出力することは可能でしょうか。
特定の単語(を含む)項目を抽出するスクリプトを書いていますが、
合致する項目が複数あった場合、それらすべてをスプレッドシートに出力したいです。
例:本文内容 抜粋
対象No.:123456789
対象No.:123412341
対象No.:123456788,123456787
(項目数は決まっていない、1~6程度)
上記の場合、「1234」を特定の単語としてスプレッドシート上に
123456789 | 123412341 | 123456788 | 123456787
のような形で別のセルに出力できることが理想ですが、別の形でも過不足なく拾えるのであればその方法は無いでしょうか。
最後のカンマつなぎの場合はそのままの形での出力でも大丈夫です。
現在は以下のコードを記載していますが、それだと最初の123456789しか拾うことができません。
条件となる単語について補足すると、
冒頭4文字まではすべて同一
桁数の決まっているナンバリング
となります。
現在は1234を検索ワードとして改行まで、という形で拾っています。
function searchContactMail() {
/* Gmailから特定条件のスレッドを検索しメールを取り出す */
var mail_query = ('ラベル条件');
var myThreads = GmailApp.search(mail_query, 0, 50); //条件にマッチしたスレッドを取得
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].getTo(); valMsgs[i][3] = myMsgs[i][0].getSubject(); valMsgs[i][4] = myThreads[i].getPermalink(); valMsgs[i][5] = myMsgs[i][0].getPlainBody().match(/1234[^\n]*/g);
}
/* スプレッドシートに出力 */
if(myMsgs.length>0){
SpreadsheetApp.getActiveSheet().getRange(2, 1, i, 6).setValues(valMsgs); //シートに貼り付け
}
}
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/05 07:23 編集
2018/09/05 08:41
2018/09/05 09:03