Created
October 29, 2020 06:17
-
-
Save xeno14/4850b2086d43dfb172f37a6315a13bb0 to your computer and use it in GitHub Desktop.
DMM英会話の予定をカレンダーに追加するGoogle Apps Script 2020年10月版
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 2020年10月版 | |
function DMMCalenderFromGmail() { | |
// メール本文のパース | |
function parseBody(body) { | |
// 開始時間と先生の名前の取得 | |
var matched = body.match(/様、(.*)の(.*)とのレッスン予約が完了しました./); | |
if (matched.length != 3) { | |
Logger.log("parse error at teacher and start time"); | |
return null; | |
} | |
var teacher = matched[2]; | |
var startDate = new Date(matched[1]); | |
var endDate = new Date(startDate.getTime() + 25 * 60 * 1000); | |
// レッスンのURLの取得 | |
var matched = body.match(/(https:\/\/eikaiwa.dmm.com\/app\/lesson-booking\/[^"]*)/); | |
if (matched.length != 2) { | |
Logger.log("parse error at link"); | |
return null; | |
} | |
var url = matched[1]; | |
return { | |
"teacher": teacher, | |
"start": startDate, | |
"end": endDate, | |
"title": "【DMM英会話】" + teacher, | |
"url": url, | |
}; | |
} | |
// レッスン予約メールの取得 | |
var threads = GmailApp.search("subject:レッスン予約 from:noreply@eikaiwa.dmm.com "); | |
// 最近の10件のみカレンダーに追加する対象とする | |
var numThreads = Math.min(threads.length, 10); | |
// メールのメッセージ | |
var messages = GmailApp.getMessagesForThreads(threads.slice(0, numThreads)); | |
// カレンダー | |
var calender = CalendarApp.getDefaultCalendar(); | |
for (var i=0; i<messages.length; i++) { | |
// メール本文のパース | |
var msg = messages[i][0]; | |
var body = msg.getBody(); | |
var contents = parseBody(body); | |
// 同名の予定が存在していなければ予定を作成する | |
var alreadyCreated = calender.getEvents(contents["start"], contents["end"], {search: contents["title"]}); | |
if (alreadyCreated.length == 0) { | |
var event = calender.createEvent(contents["title"], contents["start"], contents["end"]); | |
// 5分前のポップアップ通知 | |
event.addPopupReminder(5); | |
// レッスンのURLを追加 | |
event.setDescription(contents["url"]); | |
Logger.log("Created event: " + contents["title"] + " at " + contents["start"]); | |
} else { | |
Logger.log("Event already exists: " + contents["title"] + " at " + contents["start"]); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment