google app script - 공휴일

2024. 11. 17. 20:13·코드와 오류 기록
function set_trigger() { 
  var day = new Date();
  if (day.getDay() > 5 || day.getDay() == 0 || holiday(day) == 1) {
    return;
  }

  // 오전 10시 트리거 설정
  const timeMorning = new Date(); 
  timeMorning.setHours(10); 
  timeMorning.setMinutes(0); 
  deleteSpecificTriggers('sendToSlack');
  ScriptApp.newTrigger('sendToSlack').timeBased().at(timeMorning).create();

  // 오전 11시 30분 트리거 설정
  const timeNoon = new Date(); 
  timeNoon.setHours(11); 
  timeNoon.setMinutes(30); 
  deleteSpecificTriggers('sendToSlack');
  ScriptApp.newTrigger('sendToSlack').timeBased().at(timeNoon).create(); 
}

function holiday(day) {
    var calendarId = 'l9ijikc83v1ne5s61er6tava4iplm8id@import.calendar.google.com';
    var calendar = CalendarApp.getCalendarById(calendarId);

    Logger.log(calendar);
    Logger.log(calendar.getName());
    var events = calendar.getEventsForDay(day);
    Logger.log(events.length);

    if (events.length >= 1) {
        return true;
    } else {
        return false;
    }
}

function deleteSpecificTriggers(functionName) {
  var triggers = ScriptApp.getProjectTriggers();
  for (var i = 0; i < triggers.length; i++) {
    if (triggers[i].getHandlerFunction() === functionName) {
      ScriptApp.deleteTrigger(triggers[i]);
    }
  }
}

 

트리거를 지워주지 않으면 간헐적인 오류가 발생하니까 deleteSpecificTriggers 를 통해 지워버리자.

 

function sendToSlack() {
  var date = new Date();
  var url = ''
  postToSlack(url, null, "경기");
}

function postToSlack(url, messageType) {
  var slackWebhookUrl = '';
  var text;
  text = "지금 <" + url + "|" + messageType + ">이 시작됐어요!"

  var payload = {
    "channel": "#블라블라",
    "username": "봇",
    "link_names": 1,
    "attachments": [
      {
        "fallback": text,
        "text": text
      }
    ]
  };
  var options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload)
  };

  UrlFetchApp.fetch(slackWebhookUrl, options);
}

 

슬랙에 보내준다. 슬랙 푸시 알림에서는 슬랙 봇 username이 설정한대로 나오지 않는다는 단점이 있다.

 

대한민국 공휴일을 설정하기 위해서 아래의 캘린더를 가져오도록 했다. 그래서 공휴일과 주말에는 봇이 작동하지 않는다!

l9ijikc83v1ne5s61er6tava4iplm8id@import.calendar.google.com
저작자표시 비영리 변경금지

'코드와 오류 기록' 카테고리의 다른 글

git push RPC failed disconnect while reading sideband packet  (0) 2024.08.20
Framer에서 OS별로 버튼 출력여부 결정하기  (0) 2023.08.29
Framer에서 구글 시트로 데이터 전송하기  (0) 2023.08.29
pytorch를 이용한 운동 자세 확인  (0) 2023.08.15
SD roop 설정  (0) 2023.08.10
'코드와 오류 기록' 카테고리의 다른 글
  • git push RPC failed disconnect while reading sideband packet
  • Framer에서 OS별로 버튼 출력여부 결정하기
  • Framer에서 구글 시트로 데이터 전송하기
  • pytorch를 이용한 운동 자세 확인
신사(SinSa)
신사(SinSa)
#취미 사진가 #IT 직장인 경험하고 배운 것들을 글로, 사진으로 기록하고 있어요
  • 신사(SinSa)
    신사(SinSa)
    신사(SinSa)
  • 전체
    오늘
    어제
    • View all (424)
      • 잡념과 생각 (103)
      • 코드와 오류 기록 (80)
      • 사진 이야기 (10)
      • 교육과 육아 (12)
      • Brand (2)
      • 자료 모음 (46)
      • 축구 이야기(deprecated) (171)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    아이폰 축구게임
    박주영
    프로축구
    대치키즈
    k리그
    승강제
    프로덕트 매니저
    아이폰 게임
    한국 축구
    축구
    fc서울
    Po
    Product Owner
    프로덕트오너
    PM
    김주영
    Product Manager
    스타트업
    국가대표팀
    국가대표팀 감독
    경남FC
    아스날
    애자일
    홍명보호
    대한축구협회
    쿠웨이트전
    한국축구
    프로덕트 오너
    축구협회
    맨유
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
신사(SinSa)
google app script - 공휴일
상단으로

티스토리툴바