Google 캘린더 일정을 LINE 그룹에 게시
요구사항
사용하는 것
절차
1
명령줄에서 LINE으로 메시지를 보낼 수 있는 LINE Notify 의 「퍼스널 액세스 토큰을 발행한다」를 투고하고 싶은 그룹이나 1:1에 대해서 실시한다.
2
Google 드라이브 페이지로 이동하여 내 드라이브 ⇒ 기타 ⇒ 앱을 추가하여 GoogleAppsScript를 추가합니다.
3
내 드라이브 ⇒ 기타 ⇒ Google AppsScript에서 스크립트 편집기 열기
4
다음 스크립트로 교체
google_calendar_line_notify.gsvar googleCalendarId = "";
var lineNotifyEndPoint = "https://notify-api.line.me/api/notify";
var accessToken = "";
var monthlyPostEventTitleInitials = "★";// 月初投稿用イベント判定用頭文字
var dayOfWeekStringList = ["日", "月", "火", "水", "木", "金", "土"];
// 毎日用のメッセージ(内容も出す)
function postDailyMessage() {
var calendar = CalendarApp.getCalendarById(googleCalendarId); //カレンダーIDからカレンダーを取得
if (calendar === null)
{
Logger.log("カレンダーが見つかりませんでした。");
return;
}
var date = new Date();
date.setDate(date.getDate() + 1);
var dailyEventList = calendar.getEventsForDay(date);// 明日のイベント
var baseTitle = "明日の予定";
var message = "";
message += baseTitle;
for each (var event in dailyEventList)
{
var eventTite = event.getTitle().replace(new RegExp(monthlyPostEventTitleInitials), "");
var eventDescription = event.getDescription();
message += "\n" + eventTite + "\n" + eventDescription;
}
if (message === baseTitle)
{
return;
}
sendMessage(message);
}
// 月初用のメッセージ
function postMonthlyMessage() {
var nowDate = new Date();
var year = nowDate.getYear();
var month = nowDate.getMonth();
var startDate = new Date(year, month, 1);// 月初
var endDate = new Date(year, month + 1, 0);// 月末
var calendar = CalendarApp.getCalendarById(googleCalendarId); //カレンダーIDからカレンダーを取得
if (calendar === null)
{
Logger.log("カレンダーが見つかりませんでした。");
return;
}
var monthlyEventList = calendar.getEvents(startDate, endDate);// getEventsはstartDateを含みendDateは含まない様子
var message = "今月の予定";
var eventMessage = "";
for each (var event in monthlyEventList)
{
var eventTite = event.getTitle();
if ( ! eventTite || eventTite.slice(0, 1) !== monthlyPostEventTitleInitials)
{
continue;
}
eventTite = eventTite.replace(new RegExp(monthlyPostEventTitleInitials), "");
var eventDate = event.getStartTime();// Date
eventMessage += "\n" + eventTite + ":" + (eventDate.getMonth() + 1) + "/" + eventDate.getDate() + "(" + dayOfWeekStringList[eventDate.getDay()] + ")";
}
message += eventMessage ? eventMessage : "登録されていません";
sendMessage(message);
}
// メッセージ送信
function sendMessage(message) {
var formData = {
"message": message
};
var options = {
"headers" : {"Authorization" : "Bearer " + accessToken},
"method" : 'post',
"payload" : formData
};
try
{
var response = UrlFetchApp.fetch(lineNotifyEndPoint, options);
}
catch (error)
{
Logger.log(error.name + ":" + error.message);
return;
}
if (response.getResponseCode() !== 200)
{
Logger.log("メッセージの送信に失敗しました。");
}
}
5
스크립트의 accessToken = "";
부분에 ① 에서 얻은 개인 액세스 토큰을 설정합니다.
6
스크립트의 googleCalendarId = "";
부분에 게시할 Google 캘린더의 ID를 설정합니다. Google 캘린더의 ID는 아래 그림의 캘린더 화면의 빨간색 테두리 근처를 클릭하여 정보 목록을 확인할 수 있으므로 그 안에 표시됩니다. 어쩌면 Gmail 주소 등으로되어 있다고 생각합니다.
7
Google 캘린더에 일정을 등록합니다.
var googleCalendarId = "";
var lineNotifyEndPoint = "https://notify-api.line.me/api/notify";
var accessToken = "";
var monthlyPostEventTitleInitials = "★";// 月初投稿用イベント判定用頭文字
var dayOfWeekStringList = ["日", "月", "火", "水", "木", "金", "土"];
// 毎日用のメッセージ(内容も出す)
function postDailyMessage() {
var calendar = CalendarApp.getCalendarById(googleCalendarId); //カレンダーIDからカレンダーを取得
if (calendar === null)
{
Logger.log("カレンダーが見つかりませんでした。");
return;
}
var date = new Date();
date.setDate(date.getDate() + 1);
var dailyEventList = calendar.getEventsForDay(date);// 明日のイベント
var baseTitle = "明日の予定";
var message = "";
message += baseTitle;
for each (var event in dailyEventList)
{
var eventTite = event.getTitle().replace(new RegExp(monthlyPostEventTitleInitials), "");
var eventDescription = event.getDescription();
message += "\n" + eventTite + "\n" + eventDescription;
}
if (message === baseTitle)
{
return;
}
sendMessage(message);
}
// 月初用のメッセージ
function postMonthlyMessage() {
var nowDate = new Date();
var year = nowDate.getYear();
var month = nowDate.getMonth();
var startDate = new Date(year, month, 1);// 月初
var endDate = new Date(year, month + 1, 0);// 月末
var calendar = CalendarApp.getCalendarById(googleCalendarId); //カレンダーIDからカレンダーを取得
if (calendar === null)
{
Logger.log("カレンダーが見つかりませんでした。");
return;
}
var monthlyEventList = calendar.getEvents(startDate, endDate);// getEventsはstartDateを含みendDateは含まない様子
var message = "今月の予定";
var eventMessage = "";
for each (var event in monthlyEventList)
{
var eventTite = event.getTitle();
if ( ! eventTite || eventTite.slice(0, 1) !== monthlyPostEventTitleInitials)
{
continue;
}
eventTite = eventTite.replace(new RegExp(monthlyPostEventTitleInitials), "");
var eventDate = event.getStartTime();// Date
eventMessage += "\n" + eventTite + ":" + (eventDate.getMonth() + 1) + "/" + eventDate.getDate() + "(" + dayOfWeekStringList[eventDate.getDay()] + ")";
}
message += eventMessage ? eventMessage : "登録されていません";
sendMessage(message);
}
// メッセージ送信
function sendMessage(message) {
var formData = {
"message": message
};
var options = {
"headers" : {"Authorization" : "Bearer " + accessToken},
"method" : 'post',
"payload" : formData
};
try
{
var response = UrlFetchApp.fetch(lineNotifyEndPoint, options);
}
catch (error)
{
Logger.log(error.name + ":" + error.message);
return;
}
if (response.getResponseCode() !== 200)
{
Logger.log("メッセージの送信に失敗しました。");
}
}
8
매일 아침 게시 스크립트(postDailyMessage) 및 월별 이벤트 게시 스크립트(postMonthlyMessage)에 대해 트리거를 설정합니다.
편집 ⇒ 현재 프로젝트의 트리거에서 아래 그림과 같이 설정합니다.
postDailyMessage는 매일 19시부터 20시까지 실행됩니다. (이미지에서는)
postMonthlyMessage는 매월 1일 0시부터 1시에 실행됩니다.
참고
명령줄에서 LINE으로 메시지를 보낼 수 있는 LINE Notify
htps : //에서 ゔぇぺぺrs. 오, ぇ. 코 m / 아 ps-sc 리 pt / 레후 렌세 / 카페 r /
htps : //에서 ゔぇぺぺrs. 오, ぇ. 코 m / 아 ps-sc 리 pt / 레후 렌세 / 카 렌 r / 카 덴 r-에
htps : //에서 ゔぇぺぺrs. 오, ぇ. 코 m / 아 ps-sc 리 pt / 레후 렌세 / 우 rl 푸 tch / u rl 푸 tch
htps : //에서 ゔぇぺぺrs. 오, ぇ. 코 m / 아 ps-sc 리 pt / 레후 렌세 / 우 r 루 ぇ tch / h t pp re s 폰세
Reference
이 문제에 관하여(Google 캘린더 일정을 LINE 그룹에 게시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/horikeso/items/87638ec65c3a3b26a70d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Google 캘린더 일정을 LINE 그룹에 게시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/horikeso/items/87638ec65c3a3b26a70d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)