前提・実現したいこと
GAS初心者(3日目ぐらいです・・・)です。
Gmailからメッセージを取得し、スプレッドシートへの追加を試みています。
何とか実現できたのですが、何度も同じメッセージが追加されることを防ぎたいので、
「メッセージIDを出力し、メッセージIDに重複がない場合のみ追記する」
ようにfunction hasId(id)を追加したのですがうまくいきません。
発生している問題・エラーメッセージ
このソースでは、何度も同じメッセージが追加されてしまいます。
原因を教えて頂けると助かります!!!
該当のソースコード
var mySheet = SpreadsheetApp.getActive().getSheetByName('MAアラート');
var data = mySheet.getRange(2, 3, mySheet.getLastRow() - 1).getValues();
function myFunction_point() {
/* var sheet = SpreadsheetApp.getActiveSheet(); */
var sheet = SpreadsheetApp.getActive().getSheetByName('MAアラート');
var query = 'label:ma_アラート to:(decora@decora.jp)';
var threads = GmailApp.search(query, 0, 400);
var messages = GmailApp.getMessagesForThreads(threads);
var valMsgs = [];
for(var i=0; i < messages.length; i++) {
for(var j=0; j < messages[i].length; j++) {
var id = messages[i][j].getId();
if(!hasId(id)){
var body = messages[i][j].getPlainBody();
var date = messages[i][j].getDate();
var from = messages[i][j].getFrom();
var lastRow = sheet.getLastRow() + 1;
var mobile = sheet.getRange(lastRow, 12);
var phone = sheet.getRange(lastRow, 13);
sheet.appendRow([
date,
from,
id,
fetchData(body, '会社名:', '\r'),
fetchData(body, 'お名前(姓):', '\r'),
fetchData(body, 'お名前(名):', '\r'),
fetchData(body, 'メールアドレス:', '\r'),
fetchData(body, '者:', '\r'),
fetchData(body, '顧客主担当:', '\r'),
fetchData(body, '担当エリア:', '\r'),
fetchData(body, '達成ポイント:', '\r'),
]);
mobile.setNumberFormat('@');
mobile.setValue(fetchData(body, '携帯番号:', '\r'));
phone.setNumberFormat('@');
phone.setValue(fetchData(body, '電話番号:', '\r'));
}
}
}
}
function hasId(id) {
var hasId = data.some(function(array, i, data) {
return (array[0] === id);
});
return hasId;
}
function fetchData(str, pre, suf) {
var reg = new RegExp(pre + '.*?' + suf);
var data = str.match(reg)[0]
.replace(pre, '')
.replace(suf, '');
return data;
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/29 03:35
2019/10/29 14:17