【스프레드 시트】 일정의 날짜가 토, 일, 공휴일인지를 판정하여 셀을 색으로 구분
9679 단어 GoogleAppsScriptspreadsheetgas
했던 일
이미지와 같은 종장의 일정표를 만들고 토, 일, 공휴일을 색칠했다.
전제:B열 4행에 날짜가 기입. B ~ K 열을 색칠.
흐름
코드
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
Reference
이 문제에 관하여(【스프레드 시트】 일정의 날짜가 토, 일, 공휴일인지를 판정하여 셀을 색으로 구분), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fftcy-sttkm/items/145078db30d9c3804b4f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
Reference
이 문제에 관하여(【스프레드 시트】 일정의 날짜가 토, 일, 공휴일인지를 판정하여 셀을 색으로 구분), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fftcy-sttkm/items/145078db30d9c3804b4f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【스프레드 시트】 일정의 날짜가 토, 일, 공휴일인지를 판정하여 셀을 색으로 구분), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fftcy-sttkm/items/145078db30d9c3804b4f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)