스케줄을 짜서 슬랙으로 연락하세요.

개시하다


Qita의Google Apps Script Advent Calendar 2020|3일차 기사로 썼습니다.
이것은 지난번에 제작한 공휴일에 대응하는 응용 예다.
다음 날 교대 담당자에게 영업일이 맞는지 아니면 담당자가 설정하지 않았는지 통지한다.

절차.

  • 슬랙 사용 incoming Webhook
  • GAS를 통해 슬랙에 알림
  • Incoming Webhooks의 슬랙 사용



    현재 자신의 작업 공간에 추가할 수 있습니다.
    https://slack.com/apps/A0F7XDUAZ-incoming-webhooks
    Webhook URL을 가져오면 GAS로 설정합니다.

    GAS로 슬랙 알리기


    
    //日付計算用の定数
    const MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
    
    //編集するシート
    const SHEET_ID ="<シートのID>";
    const SHEET_NAME = "<シートの名前>";
    
    const SLACK_INCOMMING_WEBHOOK ="<Webhook URLを記載する>";
    
    const RANGE_A1_HOLIDAY = "B2:E400";//日付,曜日,祝日,担当者
    
    function sendSlack(message) {
      var payload = JSON.stringify({
        text: message
      })
      //POSTデータ
      var option = {
        "Content-Type":"application/json; charset=utf-8",
        "method" : "POST",
        "payload" : payload
      };
     
      UrlFetchApp.fetch(SLACK_INCOMMING_WEBHOOK, option);
    }
    
    function getBusinessDayValues() {
      var sheet = SpreadsheetApp.openById(SHEET_ID);
      var editSheet = sheet.getSheetByName(SHEET_NAME);
      var rangeValues = editSheet.getRange(RANGE_A1_HOLIDAY).getValues();
      var dateArray = {};
      for (var v of rangeValues){
        //日付のカラ行、曜日の土日、祝日に記載がある場合は担当者を取得しない
        if ((v[0] == "") || (v[1] == "土" || v[1] == "日") || (v[2] != "")){
          continue;
        }
        dateArray[v[0]] = v[3];
      }
      return dateArray;
    }
    
    function slackToShiftMember (){
      var now = new Date();
      //今日の0時
      var startOfToday = new Date(now.getFullYear(), now.getMonth(), now.getDate() ,
          0, 0, 0);
      var sheetDates = getBusinessDayValues(); 
      var nextDay = new Date(startOfToday.getTime() + MILLIS_PER_DAY);
      var member = sheetDates[nextDay];
      var message = "";
      
      if (member && member !="") {
        message = "明日の担当は" + member + "さんです";
      } else if(member == ""){
        message = "明日の担当は決まっていません";
      } else {
        message = "明日は営業日ではありません";
      }
      sendSlack(message);
    }
    

    최후


    지난 주말과 공휴일의 판정만 쓰면 담당자가 결정할지 말지는 좀 번거롭다
    Google Sheet에 먼저 기재하고 활용하면 문턱이 크게 떨어질 것 같습니다.

    좋은 웹페이지 즐겨찾기