◆解決したい課題
GASでGoogleカレンダからSlackへの通知で土日だけ除きたい。
一方、平日は以下の出力が得られるようにしたい。
【本日、以下のメンバがお休み】 XXお休み XX年休
◆コード
function isWorkday (targetDate) { // targetDate の曜日を確認、週末は休む (false) var rest_or_work = ["REST","mon","tue","wed","thu","fri","REST"]; // 日〜土 if ( rest_or_work [targetDate.getDay ()] == "REST" ) { return false; }; // 当てはまらなければ営業日 (True) return true; } const getCalendar = () => { const calendarId = "xxxxxx"; const calendar = CalendarApp.getCalendarById(calendarId); //const now = new Date(); // debug のために任意の日付を仕込む (year,month-1,day) today = new Date (2020, 5, 2); const leaveEvents = calendar.getEventsForDay(today).map(e=>e.getTitle()).filter(e=>e.indexOf("休") !== -1).join("\n"); if (isWorkday (today) == true) { notifySlack(leaveEvents); } } const notifySlack = (message) => { const header = `【本日、以下のメンバがお休み】\n${message.toString()}`; const payload = { // 'username':'お知らせ', 'text':header, 'channel':'gas' }; const options = { 'method':'post', 'contentType':'application/json', 'payload':JSON.stringify(payload) }; const url = 'xxxxxx' UrlFetchApp.fetch(url,options); }
◆現状
以下の出力になる。
【本日、以下のメンバがお休み】
◆想定結果
【本日、以下のメンバがお休み】 XXお休み XX年休
プログラミング初心者です。
想定通りの結果が得られず、困っております。
エラーは表示されないため、原因がわかりません。
どなたか、アドバイス等いただけますと幸いです。
何か情報追加などありましたら、何なりと仰ってください。
よろしくお願いいたします(>_<)
追記
因みに、
const now = new Date();
であれば想定通りの結果が得られております。
※もちろん、const leaveEvents = calendar.getEventsForDay(today)とif (isWorkday (today)の箇所は(now)に変更して実行しております。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/03 14:16
2020/04/03 15:24 編集
2020/04/04 13:26
2020/04/04 13:57