- SES の Bounce SNS 通知の設定を設定し、転送先の Gmail アドレスを設定する。
- Spreadsheet のスクリプトエディタで以下のスクリプトを作成する。
- トリガーに設定しておけば定期的に Gmail をチェックして Spreadsheet に書き出される。
function bounce() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("bounce");
var threads = GmailApp.getInboxThreads(0,1);
for (var threadIndex in threads){
Utilities.sleep(1000);
var thread = threads[threadIndex];
var messages = thread.getMessages();
for (var messageIndex in messages){
var message = messages[messageIndex];
var body = message.getPlainBody();
var start = body.indexOf("{");
var end = body.lastIndexOf("}");
var json = body.slice(start, end + 1);
var result;
try {
result = JSON.parse(json);
} catch(e) {
}
if(result) {
var email = result['bounce']['bouncedRecipients'][0]['emailAddress'];
var bounceType = result['bounce']['bounceType'];
var bounceSubType = result['bounce']['bounceSubType'];
var date = result['bounce']['timestamp'];
var feedbackId = result['bounce']['feedbackId'];
var diagnosticCode = result['bounce']['bouncedRecipients'][0]['diagnosticCode'];
var data = sheet.getDataRange().getValues();
var already = false;
for (var i = 0; i < data.length; i++) {
if (data[i][0] === feedbackId) {
already = true;
}
}
if(!already) {
sheet.appendRow([feedbackId, email, bounceType, date, diagnosticCode]);
}
}
}
thread.moveToArchive()
}
}