Last active
February 26, 2020 12:36
-
-
Save hedgejanuary/a76c2e04253d901547c5e1c5dc012674 to your computer and use it in GitHub Desktop.
Google Calendar から今後7日間の予定を取得し、MS Teamsのスケジュール用チャンネルに投稿する。
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 GoogleCalToMSTeams() { | |
var list = ''; | |
var calEvents = ''; | |
var calendarInUse = [ | |
// 使用するカレンダーのアドレスとそのラベリング | |
['xxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com', '\n##■XXX\'s schedule\n'], | |
['xxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com', '\n##■Out of office (staff)\n'], | |
['xxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com', '\n##■XXX events\n'], | |
['xxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com', '\n##■XXX Office events\n'], | |
['xxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com', '\n##■Due dates\n'], | |
['xxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com', '\n##■Office closing dates\n'] | |
]; | |
// 登録されたイベントをカレンダーごとにリストアップ | |
for (var i = 0; i < calendarInUse.length; i++) { | |
calEvents = listUpEvents(calendarInUse[i][0]); | |
if (calEvents) { | |
list += calendarInUse[i][1] + calEvents + '\n'; | |
} | |
} | |
if (list) { | |
var payload = { | |
"text": "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", | |
} | |
postTeams(payload); | |
} | |
} | |
//1週間の予定をリストアップ | |
function listUpEvents(cal_id) { | |
var list = ''; | |
var cal = CalendarApp.getCalendarById(cal_id); | |
var calEvents = ''; | |
//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++) { | |
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) { | |
calEvents += Utilities.formatDate(events[i].getStartTime(), "GMT+0900", "dd MMM "); | |
} else { | |
calEvents += Utilities.formatDate(events[i].getStartTime(), "GMT+0900", "dd MMM "); | |
calEvents += Utilities.formatDate(endDate, "GMT+0900", "- dd MMM "); | |
} | |
} else { | |
calEvents += Utilities.formatDate(events[i].getStartTime(), "GMT+0900", "dd MMM HH:mm"); | |
calEvents += Utilities.formatDate(events[i].getEndTime(), "GMT+0900", "-HH:mm "); | |
} | |
calEvents += events[i].getTitle(); | |
list += calEvents + " \n"; | |
} | |
return list; | |
} | |
//MS Teamsへポスト | |
function postTeams(payload) { | |
// POSTオプション | |
var options = { | |
"method": 'POST', | |
"payload": JSON.stringify(payload) | |
} | |
// アクセス先 | |
var url = "XXXXXXXXXXXXXXXXXXXXX"; //WebHook URL | |
// POSTリクエスト | |
var response = UrlFetchApp.fetch(url, options); | |
// HTML結果を取得(引数のcharsetは設定したほうが良い) | |
var content = response.getContentText('UTF-8'); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment