【전원 반드시】 멤버의 생일을 Slack에게 통지한다【축하해 준다】

11173 단어 슬랙GoogleAppsScript

이것은



Slack 작업공간의 멤버가 생일을 맞이할 때 알림이 날 수 있습니다.


계기



안의 사람은 비즈니스 측입니다만, 뜻밖에 개발부로부터 Udemy 강좌 을 받았으므로, 그쪽의 내용을 응용해 무엇인가 만들어 보려고 했습니다.

사용한 것


  • Slack Incoming Webhook
  • Google 캘린더
  • Google Apps Script(GAS)

  • 했던 일



    Slack Incoming Webhook



    Slack 프로필 > "기타 관리 항목"> "작업 공간 사용자 정의"


    "작업 공간 사용자 정의"> "App 관리"


    앱 관리 > 사용자 지정 통합에 Incomong Webhook 추가


    사용자 지정 통합 > 통합 설정의 Webhook URL을 나중에 GAS에 삽입합니다.
    통합 설정에서 알림을 받을 때 이름과 아이콘도 편집할 수 있습니다.


    Google 캘린더



    생일용 캘린더를 만들었습니다. 이 '설정 및 공유'를 열면,


    캘린더 ID를 확인할 수 있습니다. 이쪽도 나중에 GAS에 묻습니다.


    GAS



    캘린더 정보 얻기



    여기서 캘린더 ID를 지정하여 특정 캘린더 정보를 검색합니다.
    function notifySlack() {
      //お誕生日カレンダー情報の取得
      const CALENDAR_ID = '[email protected]';
      var Calendar = CalendarApp.getCalendarById(CALENDAR_ID);
    

    검색할 정보에 대해 자세히 알아보기


    
      //今日の日付
      var startDate = new Date();
      //「誕生日」を検索文字列に指定
      var optionsforGas = {
        search: '誕生日'    
      }
      var BirthdayEvents = Calendar.getEventsForDay(startDate,optionsforGas);
      var url = 'https://hooks.slack.com/services/hoge/hogehogehogehogehogehoge'
      var title = '';
      for(var i in BirthdayEvents) {
        title = BirthdayEvents[i].getTitle();
      }
    

    알림 설정



    생일 멤버가 있는 날에만 통지가 날 수 있도록 조건 분기시킨다(처음에는 이것을 하지 않았기 때문에, 「오늘은」만의 허무 통지가 날아가는 사태가 일어나고 있었습니다).
    
    if(BirthdayEvents.length != 0){  
      var text = '今日は' 
    
      //Incoming webhookからslackに送信する値
      var payload = {
        'username': '***',
        'text': text += title,
        'channel':'#develop'
      };
    
      var optionsforSlack = {
        'method': 'post',
        'contentType': 'application/json',
        'payload': JSON.stringify(payload)
      };
    
       UrlFetchApp.fetch(url, optionsforSlack);
     }
    }  
    
    

    트리거 설정



    GAS > 편집 > "현재 프로젝트 트리거"를 선택


    트리거 추가를 클릭합니다.


    이벤트 소스는, 일단 「시간 주도형」으로 했습니다만, 풀다운으로 「캘린더로부터」도 선택할 수 있으므로 그쪽이라도 좋을 것(차이는 잘 모르고 있다).


    배운 것



    여기 , 처음에는 이하와 같이 기술하고 있었습니다.
    이것이라면, 생일 사람이 없는 경우라도 변수가 움직여 버리기 때문에 변수마다 if로 둘러싸는 것이 쓸데없는 처리가 없어도 좋다.
    
      var text = '今日は' 
    
      //Incoming webhookからslackに送信する値
      var payload = {
        'username': '***',
        'text': text += title,
        'channel':'#develop'
      };
    
      var optionsforSlack = {
        'method': 'post',
        'contentType': 'application/json',
        'payload': JSON.stringify(payload)
      };
    
    
       if(BirthdayEvents.length != 0){
       UrlFetchApp.fetch(url, options);
       }
    

    참고 자료


  • Google Apps Script 공식 참조
  • 받은 강좌: 비즈니스 퍼슨에게 제공하는 업무 효율화 대전 ~Google Apps Script로 업무 자동화~

  • 여러 사람에게 가르치면서 일단 손을 움직인 것 같은 곳이 있으므로, 또 머리를 정리하고 나중에 추기할 예정입니다.

    좋은 웹페이지 즐겨찾기