Last active
April 3, 2018 17:31
-
-
Save hedgejanuary/6ae6a5694fed32708c47d1960a3176b6 to your computer and use it in GitHub Desktop.
Google Calendarから今後7日間の予定を取得し、メールで送信する。
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
//今後7日間の予定をメールで送る。 | |
function GoogleCalToEmail() { | |
var list = ""; | |
var s; | |
s = listupEvent("XXXXXXXXXXXXXXXXX@group.calendar.google.com"); //Boss' schedule | |
if (s != "") list += " \n##■XXX's schedule \n" + s + " \n"; | |
s = listupEvent("XXXXXXXXXXXXXXXXX@group.calendar.google.com"); //XXX Group's Events | |
if (s != "") list += " \n##■XXX events \n" + s + " \n"; | |
s = listupEvent("XXXXXXXXXXXXXXXXX@group.calendar.google.com"); //Due dates | |
if (s != "") list += " \n##■Due dates \n" + s+ " \n"; | |
s = listupEvent("XXXXXXXXXXXXXXXXX@group.calendar.google.com"); //Office closing dates | |
if (s != "") list += " \n##■Office closing dates \n" + s + " \n"; | |
Logger.log(list); | |
if (list != "") { | |
var payload = "Hi, here's the latest schedule for the next 7 days. \n" + " \n" + list + " \n" + "\n###Abbreviations: \n" + "* BT = Business trip \n* OOO = Out of office"; | |
EmailToStaff (payload) | |
} | |
} | |
//1週間の予定をリストアップ | |
function listupEvent(cal_id) | |
{ | |
var list = ""; | |
var cal = CalendarApp.getCalendarById(cal_id); | |
//1週間分の予定を確認 | |
var now = new Date(); | |
var end = new Date(now.getTime() + (7 * 24 * 60 * 60 * 1000));// 1週間後 | |
var events = cal.getEvents(now, end); | |
for(var i=0; i < events.length; i++){ | |
s = ""; | |
if (events[i].isAllDayEvent()) { | |
var startDate = new Date(events[i].getStartTime()); | |
var endDate = new Date(events[i].getEndTime()-(1 * 24 * 60 * 60 * 1000)); | |
if ((endDate-startDate)/(24 * 60 * 60 * 1000) <2) { | |
s += Utilities.formatDate(events[i].getStartTime(),"GMT+0900","dd MMM "); | |
} else { | |
s += Utilities.formatDate(events[i].getStartTime(),"GMT+0900","dd MMM "); | |
s += Utilities.formatDate(endDate, "GMT+0900","- dd MMM "); | |
} | |
} else { | |
s += Utilities.formatDate(events[i].getStartTime(),"GMT+0900","dd MMM HH:mm"); | |
s += Utilities.formatDate(events[i].getEndTime(), "GMT+0900","-HH:mm "); | |
} | |
s += events[i].getTitle(); | |
Logger.log(s); | |
list += s + " \n"; | |
} | |
return list; | |
} | |
//スタッフへメール連絡 | |
function EmailToStaff (payload){ | |
var recipient = 'XXXXXXXXX'; //宛先のメールアドレス。複数ある場合は【;】で区切る。 | |
var copiedRecipient = 'XXXXXXXXX'; //必要に応じて | |
var sender = 'XXXXXXXXX'; //送信アドレスとして使いたいメールアドレスを設定。 | |
var senderName = 'XXX XXX'; //必要に応じて | |
var now = new Date(); | |
var end = new Date(now.getTime() + (7 * 24 * 60 * 60 * 1000)); //1週間後 | |
now = Utilities.formatDate(now, "GMT+0900","dd MMM") | |
end = Utilities.formatDate(end, "GMT+0900","dd MMM") | |
var subject = 'XXX schedule from ' + now + ' - ' + end; | |
var body = payload; | |
GmailApp.sendEmail(recipient, | |
subject, | |
body, | |
{ | |
bcc:'', | |
cc: copiedRecipient, | |
from: sender, | |
name: senderName | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment