Skip to content

Instantly share code, notes, and snippets.

@ayumin
Last active April 16, 2024 13:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ayumin/9d772ba2b99405503780b8f70fb9bfe5 to your computer and use it in GitHub Desktop.
Save ayumin/9d772ba2b99405503780b8f70fb9bfe5 to your computer and use it in GitHub Desktop.
function autoreply_v2() {
/*
* SpreadSheetのmemberシートを取得
*/
const sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName('members');
const result = sheet.getSheetValues(1, 1, 5000, 3);
let emails = [];
// Emailリストを配列に格納
for (let i = 1; i < 1000; i++) {
let value = result[0, i][0];
if (value == "") {
break;
}
emails.push(value);
}
/*
* 最新のGmailスレッドを取得し、リストに存在しないメールアドレスとニックネームをリストに送信予約として追加する
*/
const threads = GmailApp.search('from:info@doorkeeper.jp is:unread さとうさおり後援会に新しいメンバーが加わりました', 0, 1);
threads.forEach(thread => {
let messages = thread.getMessages();
messages.forEach(message => {
let email = message.getReplyTo();
if (isNotExists_(email, emails)) {
let body = message.getPlainBody();
let knickname = getKnickNameByPlainBody_(body);
// Logger.log([email, knickname]);
// 送信予約リストにメールアドレスを追加
sheet.appendRow([email,knickname,"pend"]);
}
});
});
}
/**
* メールリストに指定したアドレスが存在するかチェック
* @param {string} email
* @param {Array} list
* @return {boolean}
*/
function isExists_(email, list) {
let resilt = list.indexOf(email);
if (resilt >= 0) {
return true;
} else {
return false;
}
}
/**
* メールリストに指定したアドレスが存在しないことをチェック
* @param {string} email
* @param {Array} list
* @return {boolean}
*/
function isNotExists_(email,list){
return !isExists_(email,list);
}
/**
* メール本文からニックネームを取得
* @param {string} body
* @return {string}
*/
function getKnickNameByPlainBody_(body) {
body.replace(/\n/g, "");
let lines = body.split('\r');
let knickname = lines[6];
return knickname.trim();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment