Skip to content

Instantly share code, notes, and snippets.

@hedgejanuary
Last active April 3, 2018 17:31
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 hedgejanuary/6ae6a5694fed32708c47d1960a3176b6 to your computer and use it in GitHub Desktop.
Save hedgejanuary/6ae6a5694fed32708c47d1960a3176b6 to your computer and use it in GitHub Desktop.
Google Calendarから今後7日間の予定を取得し、メールで送信する。
//今後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