반응형
Apps Script를 이용해,
1. Google Sheets에 Checkbox를 생성
2. 체크가 되엇을떄 다음셀에 값을 입력
3. 체크된 checkbox 수 세기
4. 전체선택/전체선택해제
를 해보겠다.
체크박스 생성
function createCheckbox() {
const sheetName = "sheetNameHere";
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
sheet.getRange("B2:B10").insertCheckboxes();
}
체크박스 선택 edit event
체크박스 선택 시, 앞 셀의 값을 뒷 셀에 뿌려주기.
/**
* edit event
* @param {object} e = event
*/
function onEdit(e) {
const getValue = e.value;
const sheetName = spreadSheet.getActiveSheet().getName();
const column = e.range.getColumn();
const row = e.range.getRow();
const activeCell = spreadSheet.getActiveCell();
if ( sheetName == "checkbox_test" ) {
if ( column == 2 && row >= 2 ) {
const nextCell = activeCell.offset(0, 1);
var preValue = "";
if ( getValue == "TRUE" ) {
const preCell = activeCell.offset(0, -1);
preValue = `나는 ${preCell.getValue()} 입니다.`;
}
nextCell.setValue(preValue);
}
}
}
체크박스 선택 edit event
체크박스 선택 시, 앞 두개 셀의 값을 뒷 셀에 뿌려주기.
/**
* edit event
* @param {object} e = event
*/
function onEdit(e) {
const getValue = e.value;
const sheetName = spreadSheet.getActiveSheet().getName();
const column = e.range.getColumn();
const row = e.range.getRow();
const activeCell = spreadSheet.getActiveCell();
if ( sheetName == "checkbox_test" ) {
if ( column == 3 && row >= 2 ) {
const nextCell = activeCell.offset(0, 1);
var settingValue = "";
if ( getValue == "TRUE" ) {
const nameCell = activeCell.offset(0, -2);
const jobCell = activeCell.offset(0, -1);
settingValue = `나는 ${nameCell.getValue()} 입니다. 직업은 ${jobCell.getValue()} 입니다.`;
}
nextCell.setValue(settingValue);
}
}
}
선택된 checkbox count
/**
* edit event
* @param {object} e = event
*/
function onEdit(e) {
const getValue = e.value;
const sheetName = spreadSheet.getActiveSheet().getName();
const column = e.range.getColumn();
const row = e.range.getRow();
const activeCell = spreadSheet.getActiveCell();
if ( sheetName == "checkbox_test" ) {
if ( column == 3 && row >= 2 ) {
const nextCell = activeCell.offset(0, 1);
var settingValue = "";
if ( getValue == "TRUE" ) {
const nameCell = activeCell.offset(0, -2);
const jobCell = activeCell.offset(0, -1);
settingValue = `나는 ${nameCell.getValue()} 입니다. 직업은 ${jobCell.getValue()} 입니다.`;
}
nextCell.setValue(settingValue);
}
const count = countCheckbox("C2:C10");
spreadSheet.getRange("D1").setValue(`선택 : ${count} `);
}
}
function countCheckbox(range) {
const values = SpreadsheetApp.getActiveSpreadsheet().getRange(range).getValues();
var checkCount = values.reduce(function (a, b) {
return a + (b[0] === true ? 1 : 0);
}, 0);
return checkCount
}
체크박스 모두 선택, 모두 선택 해제
function checkAllCheckbox(){
const range = "C2:C10";
const value = true;
setCheckbox(range, value);
}
function uncheckAllCheckbox(){
const range = "C2:C10";
const value = false;
setCheckbox(range, value);
}
function setCheckbox(range, value) {
const checkRange = SpreadsheetApp.getActiveSpreadsheet().getRange(range);
checkRange.setValue(value);
}
반응형
'GCP > Apps Script' 카테고리의 다른 글
Apps Script로 Google Sheets의 특정 셀 값을 계산해 다른 셀에 값 뿌려주기 (0) | 2023.02.09 |
---|---|
Apps Script로 Google Sheets의 Chart 생성 (0) | 2023.01.31 |
Apps Script로 생성한 웹페이지에서(웹앱 배포) 입력한 값을 Google Sheets에 저장하기 (0) | 2023.01.20 |
Apps Script로 Google Sheets의 sheets들 index(목차) 만들기 (0) | 2023.01.13 |
Apps Script로 매일 MSSQL 데이터(신규입사자 정보) 메일로 받기 (0) | 2023.01.13 |