LINEに複数のGoogleカレンダーの予定(今日、明日)を通知したいのですが、エラーが出てしまうので解決方法を教えていただけませんか?
トリガーにて朝6:00に通知予定。
例
・夜勤 20:00-9:00 今日の予定には通知するが、明日の予定には通知しない。
今日、明日の予定がない場合はLINEで通知しない
使用する関数も教えてください。
GAS初心者なのでよろしくお願い致します
function sendTodaySchedule() {
var accessToken = PropertiesService.getScriptProperties().getProperty('LINE_TOKEN');
var message = getMessage(0);
var options =
{
'method' : 'post'
,'payload' : 'message=' + message
,'headers' : {'Authorization' : 'Bearer '+ accessToken}
,muteHttpExceptions:true
};
UrlFetchApp.fetch('https://notify-api.line.me/api/notify',options);
}
function getMessage(prm) {
const week = ['日','月','火','水','木','金','土'];
var arrCals = [];
arrCals.push(CalendarApp.getCalendarById('Googleカレンダー@gmail.com'));
arrCals.push(CalendarApp.getCalendarById('Googleカレンダー@group.calendar.google.com'));//①
arrCals.push(CalendarApp.getCalendarById('Googleカレンダー@group.calendar.google.com'));//②
arrCals.push(CalendarApp.getCalendarById('Googleカレンダー@group.calendar.google.com'));//③
arrCals.push(CalendarApp.getCalendarById('Googleカレンダー@group.calendar.google.com'));//④
arrCals.push(CalendarApp.getCalendarById('Googleカレンダー@group.calendar.google.com'));//⑤
var date = new Date();
var strBody = '';
var strHeader = '';
// タイトル
if ( prm==0 ) {
strHeader = '今日 ';
} else if ( prm==1 ) {
strHeader = '明日 ';
}
date = new Date(date.getYear(),date.getMonth(),date.getDate() + prm);
strHeader += Utilities.formatDate(date,'JST','yyyy/M/d')
+ '(' +week[date.getDay()] + ') の予定\n';
strBody = getEvents(arrCals,date);
if ( _isNull(strBody) ) strBody = '予定はありません。';
return strHeader + strBody;
}
function getEvents(prmarrCals,prmDate) {
var strEvents = '';
var strStart = '';
var strEnd = '';
var strTime = '';
var strLocation = '';
var strDescription = '';
if ( !_isNull(prmarrCals) ) {
var arrEvents = prmarrCals.getEventsForDay(new Date(prmDate));arrCals.getEventsForDay(new Date(prmDate));
for (var i=0; i<arrEvents.length; i++) {
if ( !_isNull(strEvents) ) strEvents += '\n';
strStart = _HHmm(arrEvents[i].getStartTime());
strEnd = _HHmm(arrEvents[i].getEndTime());
if ( strStart===strEnd ) {
strTime = '終日';
} else {
strTime = strStart + '~' + strEnd;
}
strEvents += '・' + strTime + '【' + arrEvents[i].getTitle() + '】';
strLocation = arrEvents[i].getLocation();
strDescription = arrEvents[i].getDescription();
if ( !_isNull(strLocation) ) strEvents += '\n 場所:' + strLocation;
if ( !_isNull(strDescription) ) strEvents += '\n 説明:' + strDescription;
}
}
return strEvents;
}
function _HHmm(str){
return Utilities.formatDate(str,'JST','HH:mm');
}
function _isNull(prm) {
if ( prm=='' || prm===null || prm===undefined ) {
return true;
} else {
return false;
}
}
LINEトークンはファイルから入力しています
回答2件
あなたの回答
tips
プレビュー