Skip to content

Instantly share code, notes, and snippets.

@toshiaki-h
Forked from yoonchulkoh/dmmEikaiwa.js
Last active December 29, 2019 06:22
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save toshiaki-h/4ee862967ad52e5b26aa4a11d4856dae to your computer and use it in GitHub Desktop.
Save toshiaki-h/4ee862967ad52e5b26aa4a11d4856dae to your computer and use it in GitHub Desktop.
DMM英会話スケジュール自動登録スクリプト
/*
* DMM英会話のスケジュールを登録する
*/
var CALENDAR_NAME = 'YOUR CALENDAR NAME';
var SEARCH_QUERY = 'is:unread subject:"【DMM英会話】レッスン予約完了のお知らせ"';
var REMIND_MINUTES_BEFORE = 10;
function registDMMEikaiwaCalendar() {
// 指定したカレンダーを取得
var calendars = CalendarApp.getCalendarsByName(CALENDAR_NAME);
var calendar;
if (calendars.length === 0) {
Logger.log(CALENDAR_NAME + "カレンダーが見つかりません");
return;
} else {
calendar = calendars[0];
}
var threads = GmailApp.search(SEARCH_QUERY, 0, 1);
if (threads.length === 0) {
Logger.log("メールが見つかりません");
return;
}
var thread = threads[0];
var messages = thread.getMessages();
for (var idx in messages) {
var message = messages[idx];
var body = message.getBody();
body = body.replace(/<br \/>/g, "");
// Logger.log("message body: " + body);
var teacher = null;
var teacherName = null;
var teacherSkypeName = null;
var reservedDate = null;
var startAt = null;
var date = null;
var startTime = null;
var rows = body.split("\n");
for (var i in rows) {
var row = rows[i];
if (row.indexOf("講師名") === 0) {
teacher = row;
teacherName = teacher.replace("講師名:", "");
Logger.log(teacherName);
} else if (row.indexOf("講師Skype名") === 0) {
teacherSkypeName = row;
} else if (row.indexOf("ご予約日") === 0) {
reservedDate = row;
date = row.replace("ご予約日:", "");
date = date.replace("年", "/");
date = date.replace("月", "/");
date = date.replace("日", "/");
} else if (row.indexOf('開始時間') === 0) {
startAt = row;
startTime = startAt.replace("開始時間:", "");
startTime = startTime.replace("時", ":");
startTime = startTime.replace("分", "");
}
}
var startDateStr = date + " " + startTime;
var startDate = new Date(startDateStr);
var endDate = new Date(startDate);
endDate.setMinutes(endDate.getMinutes() + 25);
Logger.log("startDate: " + startDate);
Logger.log("endDate: " + endDate);
if (teacher && teacherSkypeName && reservedDate && startAt && date) {
var title = "DMM英会話 " + teacherName + "先生";
var contents = [teacher, teacherSkypeName, reservedDate, startAt];
var content = contents.join("\n");
Logger.log(title);
Logger.log(content);
// カレンダーに追加
var event = calendar.createEvent(title, startDate, endDate, {description: content});
event.addPopupReminder(REMIND_MINUTES_BEFORE);
thread.markRead();
}
}
}
@toshiaki-h
Copy link
Author

複数のメールに対応
リマインダーに対応

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment