お世話になります。
以下、ご存知の方いらっしゃいましたら、教えていただけますでしょうか?
Gmailで来たメールの内容をスプレッドシートに出力するスクリプトを作っています。
現在のスクリプトだと、受信したメールに返信して、そのメールに返信が来た場合、
受信したメール、返信したメール、返信が来たメールの全てがスプレッドシートに出力されてしまいます。
最初の受信したメールのみをスプレッドシートに出力したいです。
また、現在はbody部分をそのまま全て1つのセルに出力するようになっていますが、
body内の【ABC】以降、改行前までの内容を別セルに出力するようにしたいです。
function contact() {
// 検索クエリ
var query = "is:unread subject:(件名) -{label:star}";
// メールを取得する
var threads = GmailApp.search(query);
if (threads == null || threads.length === 0) return;
for (var i = 0, tlen = threads.length; i < tlen; i++) {
var msgs = threads[i].getMessages();
for (var j = 0, mlen = msgs.length; j < mlen; j++) {
var msg = msgs[j];
if (!msg.isUnread()) continue;
var from = msg.getFrom();
var subject = msg.getSubject();
// 添付ファイルがあるときに時々エラーになるため、その場合は自前でプレーンテキスト化する
var body;
try {
body = msg.getPlainBody();
}
catch(e) {
body = msg.getBody().replace(/<br[^>]*>/g, '\n').replace(/<[^>]+>/g, '').replace(/&(lt|gt|quot|amp|nbsp|#x?[0-9]+);/g, function(w, $1) {
if ($1.indexOf('#x') === 0) {
return String.fromCharCode(parseInt($1.substr(2), 16));
}
if ($1.indexOf('#') === 0) {
return String.fromCharCode(parseInt($1.substr(1), 10));
}
return ({
lt: '<',
gt: '>',
quot: '"',
amp: '&',
nbsp: ' '
})[$1];
});
}
// 出力先のスプレッドシートを指定する
var spreadsheet_url = "URL";
var OBU = SpreadsheetApp.openByUrl(spreadsheet_url);
var OBU_Sheet = OBU.getSheetByName("シート名");
var sheet = OBU.setActiveSheet(OBU_Sheet);
sheet.appendRow([from, subject, body]);
msg.star();
msg.markRead();
}
}
}