
ããã§ãã¯ããã¯ã¹3ãã¹ãã¬ããã·ãŒãäžã§å®çšç㪠ã©ãžãªãã¿ã³ ãGASã
ãã§ãã¯ããã¯ã¹ãã¿ãæåŸã§ããå°ãã¿ã®ã€ãããèš3åã«ãªã£ãŠããŸããŸãããäžå¿ãä»åãæåŸã«ãªããŸãã
ååã®èšäº
Googleã¹ãã¬ããã·ãŒãã§ ã©ãžãªãã¿ã³ ãäœãããïŒ
ãããŸã§ã®ãã§ãã¯ããã¯ã¹ã·ãªãŒãºã§ãã¹ãã¬ããã·ãŒãäžã®Â ãªãŒãžã§ã³ãšããèãæ¹ããããŠç¯å²ã«å¯ŸããŠã® ãã§ãã¯ããã¯ã¹ ã®ãã§ãã¯ç¶æ å€å®æ¹æ³ ãçè§£ã§ããããšæããŸãã
ãããã®åŠã³ãå¿çšããŠãä»å㯠Googleã¹ãã¬ããã·ãŒãã«ã¯ æšæºæ©èœãšããŠã¯çšæãããŠããªã ãå®çšçãªãã©ãžãªãã¿ã³ïŒé¢šïŒ ã ãã§ãã¯ããã¯ã¹ ãš GAS ã§äœã£ãŠã¿ãŸããããÂ
ããã£ãŠGoogleã¹ãã¬ããã·ãŒãäžã§å¿ èŠïŒïŒ
ã©ãžãªãã¿ã³ã¯ Excelã ãš æ©èœãšããŠååšããŸãã

éçº > æ¿å ¥ > ãã©ãŒã ã³ã³ãããŒã«ïŒããã㯠ActiveXã³ã³ãããŒã«ïŒãã ãªãã·ã§ã³ãã¿ã³Â ãéžæããã° OKã
åå㯠ãªãã·ã§ã³ãã¿ã³ ãšãªã£ãŠããŸããããã§ãã¯ããã¯ã¹ãšã¯ å¥ã«çšæãããŠãããã¡ãããšã«ã©ãžãªãã¿ã³ ã®èŠãç®Â ã ã«ããããšãããã¿ã³ã«ãªã£ãŠãŸããã
ã§ããExcelã§ ã©ãžãªãã¿ã³ãå¿ èŠã ã£ãã®ã¯ããã€ãŠ
ãªãŒããŒåŽã§ã¢ã³ã±ãŒãã Excelã§äœæ
â
ãã®Excelãã¡ã€ã«ã ãŠãŒã¶ãŒã« ã¡ãŒã«ç ã§é åžã
ããã㯠NASãªã©å ±æãã©ã€ãã«çœ®ã㊠ã³ããŒããŠããã
â
ãŠãŒã¶ãŒåŽã§ ãããããš Excelãã¡ã€ã«äžã§ ã©ãžãªãã¿ã³ããã§ãã¯ããã¯ã¹ã§åçéžæãäžæžãä¿å
â
ãããå床 ãã¡ã€ã«ãšããŠååãããã㯠å°å·ããçŽãåå
â
ãªãŒããŒåŽã§éèšäœæ¥ ïŒåºæ¬ç®èŠãæäœæ¥ïŒ
ãããªããšããã£ãŠãããã§ãã
ããŸã©ãããããªã¢ããã°ãªããšããŠãªãã§ãããïŒÂ

ããŸãªã ãã§ãã¯ããã¯ã¹ ã ã©ãžãªãã¿ã³ã䜿ããã㪠ã¢ã³ã±ãŒãçã¯ãGoogleãã©ãŒã  ã Microsoft Forms ã§è¡ãã¹ãã§ãã
ååãéèšãèããã°ããã£ã¡äœ¿ã£ãæ¹ã æ°å䟿å©ã
ããããã¹ãã¬ããã·ãŒãäžã§ ãããã GASã䜿ã£ãŠã ãã§ãã¯ããã¯ã¹ãã©ãžãªãã¿ã³å ããŠã æå³ãªãããããïŒ
ã¯ããæå³ã¯ãããŸããïœ
ã ã¹ãã¬ããã·ãŒãã§äœæãã質åé ç®ãã Googleãã©ãŒã ãèªåäœæãããGASããã¿ãããªèšäºã®æ¹ãããã£ãœã©å®çšæ§ããããŸãã
ããã¯ããããèªå·±æºè¶³ãšããã èªåã®äžçãšããããããšãããªã 空ãé§ããã²ãšããã®æµãæïœ ã§ãã
GASã«ãã ã¹ãã¬ããã·ãŒãæäœã®ç·Žç¿ã«ã¯ãªãããšæããŸãããäžéšã®è¬ã®å¢å㯠ã¹ãã¬ããã·ãŒãã§ã¢ã³ã±ãŒãäœãããããã§ãããïœ
ãŸãç¥ã£ãŠããšãªããã®åœ¹ã«ã¯ç«ã€ãããããŸããã
ãå®çšçãªãã©ãžãªãã¿ã³ïŒé¢šïŒã£ãŠãªãã ïŒ
ã§ã¯ãã¿ã€ãã«ã«ãªããå®çšçãªããšä»ããã®ãïŒ
ããã¯ãGASã«ãã ãã§ãã¯ããã¯ã¹ã® ã©ãžãªãã¿ã³å ã玹ä»ããŠãããµã€ãã®å 容ããã©ãã å®çšçãããªãããã§ããïŒç³ãèš³ãªãã§ããããã£ãšèª¿ã¹ãŠæããããšïŒ
ããããããã®ãã¿ãåãäžããŠããµã€ãèªäœãå€ããªããã§ãããã»ãŒã©ã®ãµã€ãã
1. ã©ãžãªãã¿ã³ã®ç¯å²ãã³ãŒãå ã§ çŽæ¥æå®ããŠãã
ãgetRange("A5:A9") ãšãã£ãæãã§
2. ãã§ãã¯ã®ON/OFF ã setValue(s) ã® true,falseã§å¶åŸ¡ããŠãã
ãããªããæ¹ãªãã§ãããã
ããã ãšä»¥äžã®ãããªã±ãŒã¹

質åïŒã©ãžãªãã¿ã³åãããã°ã«ãŒãïŒãè€æ°ããå Žåã¯ããã§ãã¯ãå ¥ã£ãè¡ãåçªå·ãååŸããŠãš 質åã®ã»ã«äœçœ®ã«åããã åå²åŠçãå¿ èŠã«ãªã£ã¡ãããŸãã
ããã äžèšã®ãããªå Žåã¯ããã§ãã¯ããã¯ã¹ã® éã« éžæè¢ã®æååã»ã«ããã£ãŠ ãã®ãŸãŸ ç¯å²ã«å¯Ÿã㊠setValue(false) ã¯äœ¿ããŸããã
1ã€ã®ã·ãŒãã« ããã³ãš 1ç®æã ã ã©ãžãªãã¿ã³ã®ã°ã«ãŒãããããªããŠã±ãŒã¹ã¯ããŸãç¡ãã§ãããïŒ éçéèœãããªããã ããã
ã·ãŒãäžã«ã¢ã³ã±ãŒãã¿ãããªåœ¢ã§ ã©ãžãªãã¿ã³ãäœããšããããäžèšã®ãããª è€æ°è³ªåããã£ãŠ è€æ°ã®ã©ãžãªãã¿ã³ã°ã«ãŒããäœãå¿ èŠãåºãŠãããšæããŸããããã«å¯Ÿå¿ã§ããªããšå®çšçãšã¯èšããŸããïŒ
ïŒæåã«æžããéãããããã ã¹ãã¬ããã·ãŒãäžã® ã©ãžãªãã¿ã³åãå®çšçãããªããã§ããããŸã§ç±ããªããªããŠããããã§ããïœïŒ
ã¡ãªã¿ã«ã©ãžãªãã¿ã³ïŒé¢šïŒ ãšããã®ã¯ãèŠãç®ãå€ããããšã¯ã§ããªãããã§ãã

æ¬æ¥ ç»åã®ããã«
ãã§ãã¯ããã¯ã¹ã¯ â ãš â
ã©ãžãªãã¿ã³ã¯ããã 㚠⊿
â»ç°å¢äŸåæåãªãã§ åãã¡ãããã
ãããªæãã§ãã§ãã¯ããã¯ã¹ãã©ãžãªãã¿ã³ã¯Â  ããžã¥ã¢ã«çãªãçŽæïŒå®çŸ©ïŒïŒããããŸããã§ãããããã«ãã§ãã¯ããã¯ã¹ã®åœ¢ç¶ã GASã§å€ããããšã¯åºæ¥ãŸããã
ãããŸã§ããã©ãžãªãã¿ã³çãªæ©èœïŒéžæã§ããã®ã¯1ã€ã®é ç®ã®ã¿ã§ãé ç®ãéžæãçŽããšä»ã®é ç®ã¯æªéžæãšãªãïŒã ããGASã§å®çŸããŠããã®ã§ãã颚ããšããŠããŸããïŒãšã¯ãããäœåºŠãç»å ŽãããšãŠã¶ããã 以é㯠ã颚ãã¯çç¥ïŒ
å®çšçãªã©ãžãªãã¿ã³ ãã©ãå®çŸãããïŒ
ããããã©ã®ããã«ããã° è€æ°è³ªåïŒãã§ãã¯ããã¯ã¹ã°ã«ãŒãïŒããã£ããããã§ãã¯ããã¯ã¹ã®éäžã«æååãå ¥ãã±ãŒã¹ã§ã察å¿ã§ãããå®çšçãªãã©ãžãªãã¿ã³ãäœãããïŒ
ååãŸã§åŠãã ããšãå¿çšããã°OKã§ããåææ¡ä»¶ã¯ãã äžã€
ã質åããšã« ãªãŒãžã§ã³ã«ãªã£ãŠããã
ããã ãã§ãã
ãã®åæã®äžã§ã
ã»ãã§ãã¯ããã¯ã¹ã ONãšãªã£ãæã«ããã®ãã§ãã¯ããã¯ã¹ã®ã»ã«ãå±ãããªãŒãžã§ã³ãååŸãã
ã»ãªãŒãžã§ã³å ã® ä»ãã§ãã¯ONãšãªã£ãã«ã¬ã³ãã»ã«ä»¥å€ãããã§ãã¯ããã¯ã¹å°çšã¡ãœãã uncheck ã§ãã§ãã¯OFFã«ãã
ãããªæãã®æµãã§ããªãŒãžã§ã³å ã®å¯Ÿè±¡ã»ã«ã«å¯ŸããŠããã§ãã¯ããã¯ã¹ä»¥å€ã«åœ±é¿ãäžããªã ãã§ãã¯ããã¯ã¹å°çšã¡ãœããã® uncheck ãé©çšãšããã°ããããã§ãã
0. æãã·ã³ãã«ãª ã©ãžãªãã¿ã³ ã³ãŒã
å®çšçãªã©ãžãªãã¿ã³ãå®çŸãã äžçªç°¡åãªã³ãŒãã¯ã³ã¬ â
function onEdit(e){
const range = e.range;
if(!range.isChecked()) return; //ç·šéã»ã«ã ãã§ãã¯ON以å€ãªãçµäº
range.getDataRegion().uncheck();
range.check();
}ã¡ããŒã·ã³ãã«ã§ããã
ãã¡ãã onEdit ã®ã·ã³ãã«ããªã¬ãŒãªãã§ ãšãã£ã¿ã§èšè¿°ãä¿åããã ãã§Â ã¹ã¯ãªããã®æ¿èªã¯å¿ èŠãªãã ãªãŒããŒã§ããŠãŒã¶ãŒïŒGoogleãã°ã€ã³ã¯å¿ èŠïŒã§ã 䜿ããŸãã
ååãŸã§ã«ç»å Žããã¡ãœããã°ãããªã®ã§ãç¹ã«è§£èª¬ãäžèŠã§ãããã
äžç¹ã ã !range.isChecked() ã®éšåã説æãããšã
range.isChecked() rangeïŒç·šéãããã»ã«ïŒã®ãã§ãã¯ããã¯ã¹å€å®
! (è«çåŠå®ïŒ å€å®çµæã å転
ç·šéãããã»ã«ã ãã§ãã¯ããã¯ã¹ ONãâãtrue ïŒå転㧠falseïŒ
ç·šéãããã»ã«ããã§ãã¯ããã¯ã¹ OFFãâãfalseïŒå転㧠trueïŒ
ç·šéãããã»ã«ããã§ãã¯ããã¯ã¹ä»¥å€ãâãnullãïŒå転㧠trueïŒ
!ïŒè«çåŠå®ïŒã¯ãã¡ããã© åæ¥æŽæ°ã®ã·ãªãŒãº èªäœé¢æ°ã§ãç»å ŽããŸãããã null ã falseãšèŠãªãããã®ã§ å転ãããš trueã«ãªããŸãã
true ãªã return ãšããŠããã®æç¹ã§çµäºãšãªããŸãã å転åŸã false ã®æïŒã€ãŸã ã»ã«ããã§ãã¯ONãšãªã£ãæïŒã®ã¿ããã®åŸã®ãªãŒãžã§ã³ã«å¯Ÿãã check,uncehck ã®åŠçãåãããã§ãã


å®éã®åäœã§ãã
ãããã¡ãããšã«è³ªåïŒãªãŒãžã§ã³ïŒåäœã§ ã©ãžãªãã¿ã³ãšããŠæ©èœã¯ããŠããã©ã»ã»ã»ã
ãªããåããã«ãã³æªãïœ
äžåºŠ ãªãã«ãªã£ãŠãããã§ãã¯ãæ»ãã£ãŠã®ãããªãã埮åŠãŒã
å®ã¯ åŠçã®äžã§ããªãŒãžã§ã³å ã® ä»ãã§ãã¯ONãšãªã£ãã«ã¬ã³ãã»ã«ä»¥å€ãããã®å€å¥ã»ååŸãã¡ãã£ãšé¢åãªãã§ãããã
ããã ãªãŒãžã§ã³å šéšãäžåºŠãã§ãã¯OFFã«ããŠãä»ãã§ãã¯ãå ¥ããã«ã¬ã³ãã»ã« ã®ã¿ ãã§ãã¯ONã«æ»ãã
ãã®æµãã«ãããšéåžžã«ç°¡åãªãã§ããŸãã¯ç°¡åãªæ¹ã®ã³ãŒãã§ãã£ãŠã¿ãŸããã
VBAãªã Application.ScreenUpdating = False å ¥ããŠãæãæ¢ããããšããã§ãããæ®å¿µãªãã GASã«ã¯ç»é¢æŽæ°ãæ¢ããã¡ãœããããããŸãããïŒéã«åŒ·å¶çã«æŽæ°ãããæ¹æ³ã¯ããïŒ
ãã®ã³ãŒãã§ååã£ãŠäººãããã§ãããããããã¡ããæèã㊠ã«ã¬ã³ãã»ã«ä»¥å€ãé©çšç¯å²ãšããã³ãŒãã«ããŠã¿ãŸãããã
ãã§ãã¯ããã¯ã¹ã å®çšçãªã©ãžãªãã¿ã³ ã«ãã 2ã€ã® GAS
ãã§ãã¯ãäžåºŠå€ããŠå床ã€ããšãã埮åŠãªæåãåé¿ããçºã«ãä»ãã§ãã¯ãå ¥ãã ã«ã¬ã³ãã»ã«ãé€ã㊠uncheckãå®è¡ãã 2ã€ã®ã¢ãããŒããèããŸããã
ãªãŒãžã§ã³å ã®ã»ã«ã1ã€ã〠å³å¯ãªãã§ãã¯ããã¯ã¹å€å®
ãªãŒãžã§ã³ã ã«ã¬ã³ãã»ã«ä»¥å€ã®æå€§4ã€ã® ç¯å²ã«åå²
ãŸã㯠1ãããã£ãŠã¿ãŸãããã
1. ãªãŒãžã§ã³ã®ã»ã«ã1ã€ã〠å³å¯ãªãã§ãã¯ããã¯ã¹å€å®
ããã¯ååã® GASã«ãã å³å¯ãªãã§ãã¯ããã¯ã¹ ON/OFFå€å®ã®å¿çšã§ãã
â å€å®ãã åŠçãŸã§ã®æµã
1. ç¯å²ïŒãªãŒãžã§ã³ïŒãååŸ
2. getDataValidations ã§ ããŒã¿å ¥åèŠå¶ã äºæ¬¡å é åã§ååŸ
3. äºæ¬¡å é åãã äžã€ã〠dataValidation ãåãåºãã«ãŒãåŠç
4. å ¥åèŠå¶ãèšå®ãããŠããªãå Žå dataValidationã¯Â null ãšãªããnull 以å€ã察象
5. getCriteriaType ã§ CHECKBOX å€å®ããã§ãã¯ããã¯ã¹ã®ã¿ã察象
6. ãã§ãã¯ããã¯ã¹ã§ãã åäœã»ã«ã ãªãŒãžã§ã³å ããååŸ
7. åäœã»ã«ã«å¯ŸããŠã® isCheckedã true ã〠ã«ã¬ã³ãã»ã«ä»¥å€ãïŒ
8. ãã®ã»ã«ã uncheck ããŠçµäº
â» ã©ãžãªãã¿ã³ãªã®ã§ãæ¢ã«ãã§ãã¯ãããŠããã»ã«ã¯ãã£ãŠã 1ã€ãšããæ³å®
ã³ãŒãã«ãããšãããªæã
ã©ãžãªãã¿ã³ ã³ãŒã ãã®1 (å€å®æ¹åŒ)
//æ±çšæ§ã®ãã ã©ãžãªãã¿ã³ã³ãŒã3
function onEdit(e){
const range = e.range;
if(!range.isChecked()) return;
//ç·šéãããã»ã«ã® A1衚èšã®ã¢ãã¬ã¹ãååŸ
const add = range.getA1Notation();
//1.ç¯å²ïŒãªãŒãžã§ã³ïŒãååŸ
const region = range.getDataRegion();
//2.getDataValidations ã§ ããŒã¿å
¥åèŠå¶ã äºæ¬¡å
é
åã§ååŸ
let dataValidations = region.getDataValidations();
//3.äºæ¬¡å
é
åãã äžã€ã〠dataValidation ãåãåºãã«ãŒãåŠç
//瞊æ¹åã«ãŒã
for(i=0; i<dataValidations.length; i++){
//暪æ¹åã«ãŒã
for(j=0; j<dataValidations[0].length; j++){
const dataValidation = dataValidations[i][j];
//4.å
¥åèŠå¶ãèšå®ãããŠããªãå Žå dataValidationã¯Â null ãšãªããnull 以å€ã察象
if(dataValidation != null){
//5.getCriteriaType ã§ CHECKBOX å€å®ããã§ãã¯ããã¯ã¹ã®ã¿ã察象
if(dataValidation.getCriteriaType() == SpreadsheetApp.DataValidationCriteria.CHECKBOX){
//6.ãã§ãã¯ããã¯ã¹ã§ãã åäœã»ã«ã ãªãŒãžã§ã³å
ããååŸ
const cell = region.getCell(i+1,j+1);
//7.åäœã»ã«ã«å¯ŸããŠã® isCheckedã true ã〠ã«ã¬ã³ãã»ã«ä»¥å€ãïŒ
if(cell.isChecked() === true && cell.getA1Notation() != add){
//8.ãã®ã»ã«ã uncheck ããŠçµäº
cell.uncheck();
return;
}
}
}
}
}
}é·ãã§ããã©ãååã®ã³ãŒãããã®ãŸãŸäœ¿ããŸããã
ããã ååã®èšäºãèªãã§ããã ããã°è§£èª¬ã¯ååããšæããŸãã
åŠçé床ãäžããçºã«ãã«ã¬ã³ãã»ã«ä»¥å€ã® ãã§ãã¯ONã 1ã€èŠã€ãã£ãæç¹ã§ããã®ã»ã«ã«å¯Ÿã㊠uncheckããŠçµäºãšããŠããŸãã
â»ã©ãžãªãã¿ã³ãšããŠäœ¿ã£ãŠããã®ã§ããã§ãã¯ãä»ããæ®µéã§ äºåã«ç¯å²å ã«ãã§ãã¯ONã®ã»ã«ã2ã€ä»¥äžããããšã¯ç¡ããšããæ³å®ã§ãã

ããã¢ãã¿ãªããåãã§ã¯ãããŸãããã¡ãããšã« ä»ãã§ãã¯ãä»ããã»ã«ä»¥å€ã« uncheckãé©çšãããŠãŸããã ãããã«å€§éããŒã¿ã®ã©ãžãªãã¿ã³ã£ãŠã±ãŒã¹ã¯ãªãã®ã§ ãã®çšåºŠã®åŠçé床ãªã蚱容ç¯å²ããšæããŸãã
ã»ã«ã1ã€ãã€å€å®ããæ¹æ³ã§ã®ã©ãžãªãã¿ã³åã¯å®çŸã§ããŸããã
2. ãªãŒãžã§ã³ã ã«ã¬ã³ãã»ã«ä»¥å€ã®æå€§4ã€ã® ç¯å²ã«åå²
2ã€ç®ã¯ 1ã€ãã€ã»ã«ã®ãã§ãã¯ããã¯ã¹å€å®ãããã®ã§ã¯ãªããæåãã ãªãŒãžã§ã³ãã«ã¬ã³ãã»ã«ä»¥å€ã®åºç»ã«åå²ããŠããã®åºç»ã«å¯Ÿã㊠uncheck ãããŠããŸãæ¹æ³ã§ãã
ãªãŒãžã§ã³ãåå²ã£ãŠã©ãããã®ïŒ

ãªãŒãžã§ã³ãåå²ãšããã®ã¯ããããªæãã§ããç¯å²ã¯åè§ã§ããå¿ èŠãããã®ã§ 1ã»ã«ãé€ããæ®ã㯠æå€§4ã€ã«åå²ãããŸãã
ãã®1ã€ã®å¡ã§ã¯ãªã è€æ°ã®ç¯å²ïŒWindowsã ãš CtrlããŒæŒããªããéžæã§ããïŒã¯ GASäžã§ã¯Â RangeList ãšããæ±ãã«ãªããŸãã
ååãå°ãè§ŠããŸãããããªãã¡ã¬ã³ã¹ã«èšèŒãããéã RangeListã«å¯ŸããŠã check, uncheck ã¡ãœããã¯äœ¿ããŸããããã§ããããã§ããïŒ
RangeList㯠sheetã¯ã©ã¹ã®ã¡ãœããã§ é垞㯠A1衚èšã®é åã§æå®ããŸãããä»åã®ãããªã±ãŒã¹ã¯è¡ãåã®çªå·ããã®ãŸãŸäœ¿ãã R1C1è¡šèš ã§æå®ããæ¹ãç°¡åã§ãããã

å¿ èŠãšãªã è¡ãåã®çªå·ã¯ 以äžã®ããã« e.range  ããã³ region ããgetç³»ã¡ãœããã§ ååŸã§ããŸãã
ã€ãŸã ãã®ãããª4ã€ã«åå²ããç¯å² ã®äœçœ®æ å ±ïŒè¡ã»åïŒã¯ã

â ãããªæãã«ååŸã§ããããã§ãã

ããšãã° äžã®ç»åã ãš ãªãŒãžã§ã³å ã§ ãã§ãã¯ããã ã«ã¬ã³ãã»ã«ãé€ãã ãâ ç¯å² äžãã¯ã
r3c2:r5c8
ã€ãŸã `r${startRow}c${startCol}:r${row-1}c${lastCol}`
ãã®ããã«è¡šããŸãã
æå€§4ã€ã®ç¯å²ã® r1c1衚èšãçæããŠãé åã«ããã·ã¥ããŠããã°ãã©ãžãªãã¿ã³ãšã㊠ãã§ãã¯ãå€ã ïŒuncheckã®ïŒå¯Ÿè±¡ãšãªã RangeList ãçæã§ãããã§ããïŒ
ãã ããã«ã¬ã³ãã»ã«ã®ãªãŒãžã§ã³å ã® äœçœ® ã«ãã£ãŠã¯ äžéšãç¡ããšãå·Šéšããªããšãã£ãã±ãŒã¹ãããã®ã§ãããã ifã§ æãå¿ èŠããããŸãã
äœè«ïŒãã³ãã¬ãŒããªãã©ã«ã䜿ã£ãŠã¿ãã
ã¡ãªã¿ã« æååå ã«å€æ°ãå ¥ã蟌ãã®ã« 䜿ã£ãŠããã®ããããã¯ã¯ã©ãŒãã䜿ã£ã ãã³ãã¬ãŒããªãã©ã«Â ãšããèšè¿°æ³ã§ãã
 `r${startRow}c${startCol}:r${row-1}c${lastCol}`
` â ãããããã¯ã¯ã©ãŒã
ããã¯ã¯ã©ãŒãã¯Â Shift + @ããŒã¯ã®ããããŒ ã§æãŠãŸãã
ããã¯ã¯ã©ãŒãå ã¯ãæ®éã®æ¹è¡ã ã·ã³ã°ã«ã¯ã©ãŒããããã«ã¯ã©ãŒãããã®ãŸãŸ 䜿ããŠãããã«Â  ${倿°ãåŒ} ãšãã£ãåœ¢ã§ å€æ° ã 颿°ãæ°åŒãªããã + ã§é£çµãã æååå ã« å ¥ã蟌ãã¡ãããŸããÂ
ãã©ãã¡ã«ã¬ãŒã»ã㌠ã®ãã«ãŒã ãå ã§ãã·ã£ã³ãã«ãºã䜿ããã¿ãããªããŸãã«Â ããŒãé åã§ããã
ãã¡ãã
"r" + startRow + "c" + startCol + ":r" + (row-1) + "c" + lastColÂ
ã§ãåãçµæãåŸãããŸãããGoogleã¹ãã¬ããã·ãŒã ã§GASã䜿ã£ãŠãããšããã®ããã¯ã¯ã©ãŒãã䜿ã£ã ãã³ãã¬ãŒããªãã©ã«ã§ã®èšè¿°ãå¿ èŠã«ãªãæããããŸãã
äŸãã° Query颿°ã GASã§ çæã㊠setValue(ãŸãã¯Â setFormula)ããããšãããšãåŒå ã« ããã«ã¯ã©ãŒããã·ã³ã°ã«ã¯ã©ãŒãããã£ããããŠããããå šäœãã©ãæ¬ãããããïŒã£ãŠãªããŸãã ãããªæã¯ ããã¯ã¯ã©ãŒãã®åºçªã§ããã
ããšã¯ããªããšãªã + ã§ç¹ãããã ç人ã£ãœãïŒãã£ãããïŒã£ãŠã®ãããããªãšïœÂ èŠããŠãããŠæã¯ãªãã§ãïŒ
ã©ãžãªãã¿ã³ ã³ãŒã ãã®2 (å岿¹åŒ)
åå²åŠçãããããã§ uncheckããæµããã³ãŒãã«ãããšãããªæãã
function onEdit(e){
const range = e.range;
if(range.isChecked() != true ) return;
const sheet = range.getSheet();
//ãã§ãã¯ãå
¥ããã»ã«ã®è¡ãå
const row = range.rowStart;
const col = range.columnStart;
//ãã§ãã¯ãå
¥ããã»ã«ã® ãªãŒãžã§ã³ ã®éå§ã»ã«ã®è¡ãåãçµäºã»ã«ã®è¡ãåãååŸ
const region =range.getDataRegion();
const startRow = region.getRow();
const startCol = region.getColumn();
const lastRow = region.getLastRow();
const lastCol = region.getLastColumn();
//å¯Ÿè±¡ãæ ŒçŽãã ã¿ãŒã²ããé
å
const target =[];
//ç¯å²1 äž
if(row > startRow){
target.push(`r${startRow}c${startCol}:r${row-1}c${lastCol}`);
}
//ç¯å²2 äž
if(row < lastRow){
target.push(`r${row+1}c${startCol}:r${lastRow}c${lastCol}`);
}
//ç¯å²3 å·Š
if(col > startCol){
target.push(`r${row}c${startCol}:r${row}c${col-1}`);
}
//ç¯å²4 å³
if(col < lastCol){
target.push(`r${row}c${col+1}:r${row}c${lastCol}`);
}
//ã¬ã³ãžãªã¹ãã®ãã§ãã¯ãå€ã
sheet.getRangeList(target).uncheck();
}åœç¶ã§ãããåããšãããã·ãŒãäžã®æå㯠ãã®1ã®å€å®åæ¹åŒãšå€ãããªãã§ããã¢ãã¿ãªæãåããããã§ããïœ

ãã㯠RangeList ã«å¯Ÿãã uncheck ã®åãããçµå±ã¯ ç¯å²ã«å¯ŸããŠé çªã«å®è¡ãããŠããããã§ãã䞊åã§äžæ°ã«åŠçãããŠãããã§ã¯ãªããã§ããã
ã©ãžãªãã¿ã³ã§ã¯ãªãã§ããã以äžã®ãããªã±ãŒã¹ã§è©ŠããŠã¿ããšåããããããŸãã
ããŸãïŒ2ã€æ¹åŒ ããããã®åããæ¯èŒããŠã¿ãã
ãã£ãããªãã§ã2ã€ã®æ¹åŒã®åŠçãæ¯ã¹ãŠã¿ãŸãããã
å€å®æ¹åŒã®æ¹ã®ã³ãŒãã¯ãreturn ã®èšè¿°ãåé€ã㊠1〠uncheckããŠãçµãããåŠçãç¶ç¶ãããããã«å€æŽããŠããŸãã


å€å®æ¹åŒã®ã»ãã¯ãäžã€äžã€åŠçããŠãã®ãããããŸãããç®èŠã§ããã¬ãã«ã®åãã¯ã
ããããããããããã ããããŒã³ããããŒã³ã
ã£ãŠæãã§ã欜ã¡ããã®ä»®è£ 倧è³Â ã£ãœãããïœ
äžã®å岿¹åŒããäžãäžãå·Šãå³ã® é ã§ãããã¯ããšã«åŠçãããŠããã®ãããªããšãªãããããŸãã
ãã§ãã¯ããã¯ã¹ãå€ãå Žåã¯ãå岿¹åŒã®ã»ãããã·ã£ãŠãããã§ãããããããã¡ãã ãµã¯ãµã¯ãªåãã ãšãããã§ããã»ã»ã»ã
ãã£ãããªãã§ æåã®ã·ã³ãã«ãª ã³ãŒãã詊ããŠã¿ãŸãããã

ããŒãããã® å šéšå€ããŠã«ã¬ã³ãã»ã«ã ããã§ãã¯å ¥ããªãããæåã®ã·ã³ãã«ãªã³ãŒãã çµå±äžçªæ©ãããïœ
ãã¡ããã©ãžãªãã¿ã³ãšããŠäœ¿ããªãããããªã«è€æ°ã®ãã§ãã¯ããã¯ã¹ãæ¢ã«ãã§ãã¯ãããç¶æ ã£ãŠããšã¯ç¡ãã§ããããã
ãšãã«ãã§ãã¯ããç®æãäžæŠæ¶ããŠåŸ©æŽ»ããŠããã«ãªããªã
âã0.ã·ã³ãã«æ¹åŒã§
質åããšã® ãã§ãã¯ããã¯ã¹ã®æ°ã¯å€ããªã
âã1.å€å®æ¹åŒã§
äžã€ã®è³ªåã®äžã«ãã§ãã¯ããã¯ã¹ã倿°ãã
âã2.å岿¹åŒã§
ãããªæ£²ã¿åãã§ãããããããšã¯ 䜿ã人㮠ã奜ã¿ã§äœ¿ããå Žé¢ããã£ãã æŽ»çšãã ããïŒ
ã£ãŠãŸãšãããã©ããå®çšçããšè¬³ã£ãããã«ããããŸå®çšçãããªãã£ãããããïŒã£ãŠèšããããã»ã»ã»ã
ãã§ãã¯ããã¯ã¹ ã®äžæ¬ ON/OFFãä»åã® ã©ãžãªãã¿ã³åãéããŠã GASã®çè§£ãæ·±ãŸãã°å¹žãã§ãã
ãšããããã¯ã äžçªæåã«ç޹ä»ãã GASã䜿ããªã
Ctrl + A ã® ãªãŒãžã§ã³éžæ
ã¹ããŒã¹ããŒã§ã® ãã§ãã¯ããã¯ã¹ äžæ¬ON/OFF
ãã®2ã€ã¯ã¬ã䟿å©ãªãã§ãããã ãèŠããŠæŽ»çšããã§ãããããã
次åãçªå€ç·šã£ãŠããšã§ ãã§ãã¯ããã¯ã¹ã®å°ãã¿ãããå°ãã ããGASãç¶ãããã§ãGASã䜿ããªããã¿ ã幟ã€ã玹ä»ããããšæããŸãã
æå€ãšGASãªãã§ãè²ã åºæ¥ããšããé©ããšçºèŠãããããïŒïŒ