【스프레드 시트】 일정의 날짜가 토, 일, 공휴일인지를 판정하여 셀을 색으로 구분

했던 일



이미지와 같은 종장의 일정표를 만들고 토, 일, 공휴일을 색칠했다.
전제:B열 4행에 날짜가 기입. B ~ K 열을 색칠.


흐름


  • 날짜 (Date 객체) 배열을 만듭니다.
  • getDay() 메소드를 사용해 0(일요일)~6(토요일)로 이루어지는 배열을 작성.
  • Google 캘린더의 '일본 공휴일' 캘린더를 사용하여 공휴일인지 그렇지 않은지에 대한 배열을 만듭니다.
  • ↑의 2와 3 배열의 값에 따라 셀을 색칠.

  • 코드


    
    function myFunction() {
    
      //B列の日付取得・Dateオブジェクトの配列作成 
      var sheet = SpreadsheetApp.getActiveSheet();
      var dates = sheet.getRange(4, 2, sheet.getLastRow(),1).getValues().map(function(date, index,array){
        return new Date(date);
        })
    
      //mapで曜日(0〜6)の配列を作成 → 土日判定に使用
      var dayofweek = dates.map(function(date,index,array){
          return date.getDay();
      })
    
      //mapで祝日か否かの配列作成(True or False)
      var calendar = CalendarApp.getCalendarById('ja.japanese#[email protected]');
      var isHoliday = dates.map(function(date,index,array){
        if(calendar.getEventsForDay(date) != ''){
          return true;
        }else{
          return false;
        }
      })
    
      //セルを土日祝日に応じて色ぬり。インデックスの+4の行が色ぬり対象。
      //日(0)→赤、土(6)→青
      for(i=0;i<dates.length-1;i++){
        var rng = sheet.getRange(i+4,2,1,10)
    
        if(dayofweek[i]===0){
          rng.setBackgroundRGB(234,173,173);
        }else if(dayofweek[i]===6){
          rng.setBackgroundRGB(170,187,237);
        }
      //祝日→赤
        if(isHoliday[i]){
          rng.setBackgroundRGB(234,173,173);
        }
    
      }
    
    }
    
    

    사용한 방법 등



    배열의 각 요소에 함수에 의한 처리 (Array 객체의 map 메소드에서)



    대상 배열의 각 요소에 대해 인수로 전달 된 콜백 함수가 처리되고 다른 배열이 반환 값이됩니다. forEach는 반환값 없음.
    var result = lists.map(function(value,index,array){
        なんらかの処理元の配列の値valueインデックスindexを使える
        arrayは元の配列のことでこれを使うと元の配列自体を変更できる
        return 結果
      })
    

    Date 객체로부터 요일을 취득(getDay 메소드)



    0(일요일)~6(토요일)이 돌아온다.
    var date = new Date('日付')
    Logger.log(date.getDay());
    

    Google 캘린더에서 특정 날짜의 일정을 가져옵니다.



    공휴일을 취득하고 싶을 때는, 캘린더 ID를 'ko.japanese# 호다 y@g 왁스 p. v. 썩은 r. 오, ぇ. 이 m'로 한다. 건네준 일자의 이벤트(이 경우 공휴일)가 돌아온다.
    기간 지정할 때는 getEvents(시작일, 종료일)로 한다. 이벤트의 배열이 돌아온다.
    var calendar = CalendarApp.getCalendarById('カレンダーID');
    Logger.log(calendar.getEventsForDay('Dateオブジェクト'))
    

    참고



    감사합니다.
    htps : //가 되어-t. 이 m /이 s-i s-ship-s- y- 또는 r /
    htps : // 코 m / 팬더 _ P 로g et m / ms / 31f331fd4c2f3c fb333

    좋은 웹페이지 즐겨찾기