LINE Notify와 Gas를 사용해 ~Google 캘린더 예정 통지편~
17695 단어 Line초보자GoogleAppsScriptLineNotifygas
(다른 기사에서 LINE에서 일정 등록, 변경, 취소 하는 기능에 대해서도 쓰고 있습니다.)
※ GAS의 사용법, LINE Notify에 대해서 등은 그 밖에 많이 기사가 나와 있으므로 할애하고 있습니다.
LINE에 일정 알림
매주 일요일 밤에 1주일 분의 일정을, 전날 밤에 다음 날의 일정을 보내도록 합니다.
만드는 것
사전 준비
1) GAS(Google Apps Script) 환경
2) LINE Notify의 액세스 토큰
구현
1) Google 캘린더로부터 일정을 취득
//1週間分
function getScheduleForWeek() {
let tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
let oneWeekLater = new Date();
oneWeekLater.setDate(oneWeekLater.getDate() + 8);
let events = CalendarApp.getDefaultCalendar().getEvents(tomorrow, oneWeekLater);
if(events.length === 0) {
sendTolLine("\n来週の予定はありません。");
}
let event = setWeekEventsForDisplay(events);
sendTolLine('\n↓来週の予定です。\n\n' + event);
}
//1日分
function getScheduleForDay() {
let tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
let events = CalendarApp.getDefaultCalendar().getEventsForDay(tomorrow);
if(events.length === 0 || events === undefined) {
sendTolLine("\n明日の予定はありません。");
}
let event = setDayEventsForDisplay(events);
sendTolLine('\n↓明日の予定です。\n\n' + event);
}
2) 취득한 예정을 성형(여기는 취향의 문제)
const arrayDay = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
//1週間分の予定を表示用にセット
function setWeekEventsForDisplay(events)
{
let beforeDayOfTheWeek = '';
let count = 1;
let event = "";
for (let i in events) {
let title = events[i].getTitle(); //タイトル
let startDay = new Date(events[i].getStartTime());
let startTime = Utilities.formatDate(startDay, "JST", "HH:mm"); //開始時間
let endTime = Utilities.formatDate(events[i].getEndTime(), "JST", "HH:mm"); //終了時間
let numberOfDay = startDay.getDay(); //曜日番号を取得
let newdayOfTheWeek = arrayDay[numberOfDay];
if(beforeDayOfTheWeek !== newdayOfTheWeek) {
beforeDayOfTheWeek = newdayOfTheWeek;
count = 1;
event += "-------------\n" + beforeDayOfTheWeek + "\n-------------\n";
}
event += count + "件目\n予定:" + title + "\n開始時間:" + startTime + "\n終了時間:" + endTime + "\n\n";
count = Number(count) + 1;
}
return event;
}
//1日分の予定を表示用にセット
function setDayEventsForDisplay(events)
{
let event = "";
for (let i in events) {
let count = Number(i) + 1;
let title = events[i].getTitle();
let startTime = Utilities.formatDate(events[i].getStartTime(), "JST", "HH:mm");
let endTime = Utilities.formatDate(events[i].getEndTime(), "JST", "HH:mm");
event += count + "件目\n予定:" + title + "\n開始時間:" + startTime + "\n終了時間:" + endTime;
event += (count !== events.length)? "\n\n" : "";
}
return event;
}
3) LINE에 일정을 보내기
function sendTolLine(message)
{
let token = "{LINE Notifyのアクセストークン}";
let options = {
"method": "post",
"payload": `message=${message}`,
"headers": {
"Authorization": `Bearer ${token}`
}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}
알림 트리거
GAS의 트리거 기능을 사용하여 정해진 시간에 일정을 알리도록 합니다. (매우 편리!)
세세한 설정 방법은 조사하면 많이 나옵니다만, 이런 느낌으로 주기(일마다, 월별 등), 시간을 선택할 수 있습니다.
마지막으로
자신을 위해 적당하게 만들었기 때문에 전혀 리팩토링 할 수 없습니다.
그리고, 예정 통지도 LINE Bot를 사용하고 싶었습니다만 LINE Notify를 사용하는 방법 밖에 모릅니다.
전부 1개의 채널로 완결시키고 싶다. . . 좋은 방법 아시는 분이라면 꼭 가르쳐 주세요.
Reference
이 문제에 관하여(LINE Notify와 Gas를 사용해 ~Google 캘린더 예정 통지편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/iiizoo/items/c56ed0d5d901c4ff31bc
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
//1週間分
function getScheduleForWeek() {
let tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
let oneWeekLater = new Date();
oneWeekLater.setDate(oneWeekLater.getDate() + 8);
let events = CalendarApp.getDefaultCalendar().getEvents(tomorrow, oneWeekLater);
if(events.length === 0) {
sendTolLine("\n来週の予定はありません。");
}
let event = setWeekEventsForDisplay(events);
sendTolLine('\n↓来週の予定です。\n\n' + event);
}
//1日分
function getScheduleForDay() {
let tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
let events = CalendarApp.getDefaultCalendar().getEventsForDay(tomorrow);
if(events.length === 0 || events === undefined) {
sendTolLine("\n明日の予定はありません。");
}
let event = setDayEventsForDisplay(events);
sendTolLine('\n↓明日の予定です。\n\n' + event);
}
const arrayDay = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
//1週間分の予定を表示用にセット
function setWeekEventsForDisplay(events)
{
let beforeDayOfTheWeek = '';
let count = 1;
let event = "";
for (let i in events) {
let title = events[i].getTitle(); //タイトル
let startDay = new Date(events[i].getStartTime());
let startTime = Utilities.formatDate(startDay, "JST", "HH:mm"); //開始時間
let endTime = Utilities.formatDate(events[i].getEndTime(), "JST", "HH:mm"); //終了時間
let numberOfDay = startDay.getDay(); //曜日番号を取得
let newdayOfTheWeek = arrayDay[numberOfDay];
if(beforeDayOfTheWeek !== newdayOfTheWeek) {
beforeDayOfTheWeek = newdayOfTheWeek;
count = 1;
event += "-------------\n" + beforeDayOfTheWeek + "\n-------------\n";
}
event += count + "件目\n予定:" + title + "\n開始時間:" + startTime + "\n終了時間:" + endTime + "\n\n";
count = Number(count) + 1;
}
return event;
}
//1日分の予定を表示用にセット
function setDayEventsForDisplay(events)
{
let event = "";
for (let i in events) {
let count = Number(i) + 1;
let title = events[i].getTitle();
let startTime = Utilities.formatDate(events[i].getStartTime(), "JST", "HH:mm");
let endTime = Utilities.formatDate(events[i].getEndTime(), "JST", "HH:mm");
event += count + "件目\n予定:" + title + "\n開始時間:" + startTime + "\n終了時間:" + endTime;
event += (count !== events.length)? "\n\n" : "";
}
return event;
}
function sendTolLine(message)
{
let token = "{LINE Notifyのアクセストークン}";
let options = {
"method": "post",
"payload": `message=${message}`,
"headers": {
"Authorization": `Bearer ${token}`
}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}
Reference
이 문제에 관하여(LINE Notify와 Gas를 사용해 ~Google 캘린더 예정 통지편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/iiizoo/items/c56ed0d5d901c4ff31bc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)