[Google Apps Script] 체크박스에서 스프레드시트의 특정 행 표시/숨기기 전환
소개
스프레드시트에 체크박스를 배치하고 활성 상태에 따라 지정된 행을 표시/숨기기로 전환하고 싶습니다.
GAS를 사용하면 좋을 것 같아서, 조속히 시험해 보았으므로 써 보겠습니다.
완성도
아래 준비
스프레드시트를 새로 만듭니다.
1. A1~A3에 「A」 「B」 「C」라고 입력.
2. B1~B3에 체크 박스를 배치. 체크 박스는 삽입 → 체크 박스로 배치할 수 있습니다.
3. C1-C3에 쉼표로 구분된 적절한 숫자를 넣습니다. 여기에 넣은 행수가, 체크했을 경우의 표시하는 행이 됩니다.
도구 → 스크립트 편집기를 선택하고 다음 코드를 붙여넣습니다.
코드 전문
var CHECKBOX_COLUMN = 2; // チェックボックスの列
var CHECKBOX_COUNT = 3; // チェックボックスの数
var HIDDEN_FIELD_START = 6; // 何行目から消すのか
var HIDDEN_FIELD_END = 30; // 何行目まで消すのか
// スプレッドシートの値が変更された時に発火
function changeEvent() {
var sheet = SpreadsheetApp.getActiveSheet();
var activeCell = sheet.getActiveCell();
if (activeCell.getColumn() == CHECKBOX_COLUMN){ // チェックボックス列の値が変更された場合
checkBoxEvent(sheet);
}
}
// チェックボックスのチェック状態に合わせて表示・非表示を切り替える
function checkBoxEvent(sheet) {
var rows = sheet.getRange(1, CHECKBOX_COLUMN, CHECKBOX_COUNT, 1).getValues();
hiddenFields(sheet);
for (var i = 0; i < rows.length; i++) {
if (rows[i][0] === true) {
var showRows = sheet.getRange(i + 1, CHECKBOX_COLUMN + 1).getValue().split(',');
for (var j = 0; j < showRows.length; j++) {
sheet.showRows(showRows[j]); // チェックボックスの1個右のセルの値に記載されている行数を表示する
}
}
}
}
// 非表示行エリアを全非表示にする
function hiddenFields(sheet) {
sheet.hideRows(HIDDEN_FIELD_START, HIDDEN_FIELD_END - HIDDEN_FIELD_START + 1);
}
동작 확인
스프레드시트의 커서를 B 열의 어딘가에 놓습니다.
if (activeCell.getColumn() == CHECKBOX_COLUMN){ // チェックボックス列の値が変更された場合
소스 코드에서 보면 이 부분, B열의 값 변경 이벤트에만 발화하도록 설정하고 있기 때문입니다.
스크립트 편집기에서 실행 → 함수 실행 → changeEvent를 선택합니다.
실행 허가의 윈도우가 나오므로 과거 기사 스쿠쇼 를 참고해 주세요.
스프레드시트의 10~30행째가 비표시가 되어, 체크 ON으로 되어 있는 셀 오른쪽 옆에서 지정하고 있는 행만 표시되면 성공입니다.
트리거 설정
확인란을 변경하면 스프레드시트의 변경 이벤트를 트리거로 changeEvent 함수가 자동으로 실행되도록 자동으로 행을 표시하거나 숨기도록 설정합니다.
스크립트 편집기 "편집 → 현재 프로젝트 트리거"또는 시계 아이콘에서 트리거 설정 화면으로 날아갑니다.
오른쪽 하단의 "트리거 추가"에서 아래와 같이 설정합니다.
추가 (2019/10/21)
function changeEvent() {
,
function onEdit() {
하는 것만으로 트리거를 설정하지 않아도 마음대로 움직입니다.
Reference
이 문제에 관하여([Google Apps Script] 체크박스에서 스프레드시트의 특정 행 표시/숨기기 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rf_p/items/8746ed7adba1561cb245
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
아래 준비
스프레드시트를 새로 만듭니다.
1. A1~A3에 「A」 「B」 「C」라고 입력.
2. B1~B3에 체크 박스를 배치. 체크 박스는 삽입 → 체크 박스로 배치할 수 있습니다.
3. C1-C3에 쉼표로 구분된 적절한 숫자를 넣습니다. 여기에 넣은 행수가, 체크했을 경우의 표시하는 행이 됩니다.
도구 → 스크립트 편집기를 선택하고 다음 코드를 붙여넣습니다.
코드 전문
var CHECKBOX_COLUMN = 2; // チェックボックスの列
var CHECKBOX_COUNT = 3; // チェックボックスの数
var HIDDEN_FIELD_START = 6; // 何行目から消すのか
var HIDDEN_FIELD_END = 30; // 何行目まで消すのか
// スプレッドシートの値が変更された時に発火
function changeEvent() {
var sheet = SpreadsheetApp.getActiveSheet();
var activeCell = sheet.getActiveCell();
if (activeCell.getColumn() == CHECKBOX_COLUMN){ // チェックボックス列の値が変更された場合
checkBoxEvent(sheet);
}
}
// チェックボックスのチェック状態に合わせて表示・非表示を切り替える
function checkBoxEvent(sheet) {
var rows = sheet.getRange(1, CHECKBOX_COLUMN, CHECKBOX_COUNT, 1).getValues();
hiddenFields(sheet);
for (var i = 0; i < rows.length; i++) {
if (rows[i][0] === true) {
var showRows = sheet.getRange(i + 1, CHECKBOX_COLUMN + 1).getValue().split(',');
for (var j = 0; j < showRows.length; j++) {
sheet.showRows(showRows[j]); // チェックボックスの1個右のセルの値に記載されている行数を表示する
}
}
}
}
// 非表示行エリアを全非表示にする
function hiddenFields(sheet) {
sheet.hideRows(HIDDEN_FIELD_START, HIDDEN_FIELD_END - HIDDEN_FIELD_START + 1);
}
동작 확인
스프레드시트의 커서를 B 열의 어딘가에 놓습니다.
if (activeCell.getColumn() == CHECKBOX_COLUMN){ // チェックボックス列の値が変更された場合
소스 코드에서 보면 이 부분, B열의 값 변경 이벤트에만 발화하도록 설정하고 있기 때문입니다.
스크립트 편집기에서 실행 → 함수 실행 → changeEvent를 선택합니다.
실행 허가의 윈도우가 나오므로 과거 기사 스쿠쇼 를 참고해 주세요.
스프레드시트의 10~30행째가 비표시가 되어, 체크 ON으로 되어 있는 셀 오른쪽 옆에서 지정하고 있는 행만 표시되면 성공입니다.
트리거 설정
확인란을 변경하면 스프레드시트의 변경 이벤트를 트리거로 changeEvent 함수가 자동으로 실행되도록 자동으로 행을 표시하거나 숨기도록 설정합니다.
스크립트 편집기 "편집 → 현재 프로젝트 트리거"또는 시계 아이콘에서 트리거 설정 화면으로 날아갑니다.
오른쪽 하단의 "트리거 추가"에서 아래와 같이 설정합니다.
추가 (2019/10/21)
function changeEvent() {
,
function onEdit() {
하는 것만으로 트리거를 설정하지 않아도 마음대로 움직입니다.
Reference
이 문제에 관하여([Google Apps Script] 체크박스에서 스프레드시트의 특정 행 표시/숨기기 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rf_p/items/8746ed7adba1561cb245
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var CHECKBOX_COLUMN = 2; // チェックボックスの列
var CHECKBOX_COUNT = 3; // チェックボックスの数
var HIDDEN_FIELD_START = 6; // 何行目から消すのか
var HIDDEN_FIELD_END = 30; // 何行目まで消すのか
// スプレッドシートの値が変更された時に発火
function changeEvent() {
var sheet = SpreadsheetApp.getActiveSheet();
var activeCell = sheet.getActiveCell();
if (activeCell.getColumn() == CHECKBOX_COLUMN){ // チェックボックス列の値が変更された場合
checkBoxEvent(sheet);
}
}
// チェックボックスのチェック状態に合わせて表示・非表示を切り替える
function checkBoxEvent(sheet) {
var rows = sheet.getRange(1, CHECKBOX_COLUMN, CHECKBOX_COUNT, 1).getValues();
hiddenFields(sheet);
for (var i = 0; i < rows.length; i++) {
if (rows[i][0] === true) {
var showRows = sheet.getRange(i + 1, CHECKBOX_COLUMN + 1).getValue().split(',');
for (var j = 0; j < showRows.length; j++) {
sheet.showRows(showRows[j]); // チェックボックスの1個右のセルの値に記載されている行数を表示する
}
}
}
}
// 非表示行エリアを全非表示にする
function hiddenFields(sheet) {
sheet.hideRows(HIDDEN_FIELD_START, HIDDEN_FIELD_END - HIDDEN_FIELD_START + 1);
}
동작 확인
스프레드시트의 커서를 B 열의 어딘가에 놓습니다.
if (activeCell.getColumn() == CHECKBOX_COLUMN){ // チェックボックス列の値が変更された場合
소스 코드에서 보면 이 부분, B열의 값 변경 이벤트에만 발화하도록 설정하고 있기 때문입니다.
스크립트 편집기에서 실행 → 함수 실행 → changeEvent를 선택합니다.
실행 허가의 윈도우가 나오므로 과거 기사 스쿠쇼 를 참고해 주세요.
스프레드시트의 10~30행째가 비표시가 되어, 체크 ON으로 되어 있는 셀 오른쪽 옆에서 지정하고 있는 행만 표시되면 성공입니다.
트리거 설정
확인란을 변경하면 스프레드시트의 변경 이벤트를 트리거로 changeEvent 함수가 자동으로 실행되도록 자동으로 행을 표시하거나 숨기도록 설정합니다.
스크립트 편집기 "편집 → 현재 프로젝트 트리거"또는 시계 아이콘에서 트리거 설정 화면으로 날아갑니다.
오른쪽 하단의 "트리거 추가"에서 아래와 같이 설정합니다.
추가 (2019/10/21)
function changeEvent() {
,
function onEdit() {
하는 것만으로 트리거를 설정하지 않아도 마음대로 움직입니다.
Reference
이 문제에 관하여([Google Apps Script] 체크박스에서 스프레드시트의 특정 행 표시/숨기기 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rf_p/items/8746ed7adba1561cb245
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
if (activeCell.getColumn() == CHECKBOX_COLUMN){ // チェックボックス列の値が変更された場合
확인란을 변경하면 스프레드시트의 변경 이벤트를 트리거로 changeEvent 함수가 자동으로 실행되도록 자동으로 행을 표시하거나 숨기도록 설정합니다.
스크립트 편집기 "편집 → 현재 프로젝트 트리거"또는 시계 아이콘에서 트리거 설정 화면으로 날아갑니다.
오른쪽 하단의 "트리거 추가"에서 아래와 같이 설정합니다.
추가 (2019/10/21)
function changeEvent() {
,
function onEdit() {
하는 것만으로 트리거를 설정하지 않아도 마음대로 움직입니다.
Reference
이 문제에 관하여([Google Apps Script] 체크박스에서 스프레드시트의 특정 행 표시/숨기기 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rf_p/items/8746ed7adba1561cb245
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
function changeEvent() {
function onEdit() {
Reference
이 문제에 관하여([Google Apps Script] 체크박스에서 스프레드시트의 특정 행 표시/숨기기 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rf_p/items/8746ed7adba1561cb245텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)