
Googleã¹ãã¬ããã·ãŒã ã§äœ¿ããã¹ãã³ãã¿ã³æ€èšŒ -2 onEditãäœ¿ãæ¹æ³
Excelã«ã¯ãããã© Googleã¹ãã¬ããã·ãŒãã«ã¯æ©èœãšããŠã¯ç¡ã ã¹ãã³æ©èœïŒã¹ãã³ãã¿ã³ïŒããã¡ãã GAS ã 颿°ã§ å®è£ ããæ¹æ³ãæ€èšŒããã©ã®ã¢ãããŒãããã¹ããªã®ããèããŠã¿ãããšæããŸãã
ä»å㯠ãã®2ã§ãã
ååã®èšäº
Q. ã»ã«ã®æ°åã墿žãããã¹ãã³æ©èœãå®è£ ããã
ã»A2ã»ã«ã®æ°å ã¹ãã³ãã¿ã³ã§ 墿žãããã
ïŒä»¥äžã¯è¿œå èŠä»¶ïŒ
ã»ã§ããã° Excelã¿ããã« ãµã¯ãµã¯åãããã
ã»ã§ããã° ã¹ããïŒã¢ããªçïŒã§ã䜿ãããšãã
ã»å¢æžã®å€ã¯ ã«ã¹ã¿ã ã§ãããšããã 1ãã€ä»¥å€ã«5ãã€ãšãã
ã»ã»ã«åºå®ã§ã¯ãªããã¢ã¯ãã£ãã»ã«ã§ã¹ãã³æ©èœäœ¿ãããããïŒ
以äžã®4ã€ã®æ¹æ³ã§æ€èšŒããŠã¿ãŸãã
GAS ã§ã¹ãã³ãã¿ã³ãäœã£ãŠã¿ã
ã¢ãã€ã«å¯Ÿå¿ onEdit ã§åãã¹ãã³ãã¿ã³ãèãã
颿°ã§ã¹ãã³ãã¿ã³åºæ¥ãã詊ããŠã¿ã
HtmlService䜿ã£ãŠ ãã€ã¢ãã°ã§ã¹ãã³
ååã® 1ã®æ¹æ³ã¯ãçµæãšããŠã¯ã€ãã€ãã§ããã
ä»åã¯ã©ãã§ããããã
A2.ã¢ãã€ã«å¯Ÿå¿ onEdit ã§åãã¹ãã³ãã¿ã³ãèãã
ååã®å³åœ¢ã«GASãå²ãåœãŠãŠå®è¡ãã¿ã³ãšããæ¹æ³ã¯ãã¹ããã®ã¢ããªçã§ã¯æ©èœããŸããã§ããã
ã§ã¯ãã¹ãã ã¢ããªçã§GASãåããã«ã¯ã©ãããã°ãããïŒ
以åã¿ã€ã ã¹ã¿ã³ãã®èšäºã§ã玹ä»ãããç·šéæããªã¬ãŒÂ ã§ããã° ã¹ããã¢ããªçããã§ã GASãå®è¡ã§ããŸãã
ããªãã¿ã® ã·ã³ãã«ããªã¬ãŒÂ onEdit ãäœ¿ãæ¹æ³ããä»å㯠ã¹ãã³ãã¿ã³ã«å¿çšããŠã¿ãŸãããã
GASå®è¡ ãã¿ã³ã¯ ãã§ãã¯ããã¯ã¹ã§ä»£çšÂ ããã®ãè¯ãã§ããã
ã¯ãªãã¯ãã¿ããã§ ãã§ãã¯ãä»ãããå€ãããåºæ¥ãã®ã§ããã®ãŸãŸ UP / DOWN ã®å®è¡ãã¿ã³ãšããŠå©çšã§ããŸãã
ãã§ãã¯ããã¯ã¹ãš onEditã®çµã¿åããã¯ãäžæ¬ ON/OFFãã¿ã§ãåãäžããŠããŸãã
Googleã¹ãã¬ããã·ãŒãã®ãã§ãã¯ããã¯ã¹ã¯ãã»ã«å ã®ãªããžã§ã¯ããšããæ±ããªã®ã§ãã»ã«ã®äœçœ®æ å ±ãæ€ç¥ã§ããããGASãããå¶åŸ¡ãããã㊠ãšãŠã䟿å©ã§ãã
宿ã€ã¡ãŒãžãçšæããŠãã³ãŒããæžããŠã¿ãã
ä»åã® onEdit ã¹ãã³ã¯ã以äžã®ãããªå®æã€ã¡ãŒãžã§ãã
ãããå®çŸãã ã³ãŒããæžããŠã¿ãŸãããã

onEditã§ãã§ãã¯ããã¯ã¹ãã¹ãã³ãã¿ã³ãšããŠäœ¿ã GASã³ãŒã
â ã³ãŒãã¯ãããªæã
// ãã§ãã¯ããã¯ã¹ + onEditã䜿ã£ãã¹ãã³æ©èœ
// ã¹ãã³ã»ã«ã¯ A2åºå®
function onEdit(e){
const upButtonRange = "B2" //ã¢ãããã¿ã³ ã»ã«äœçœ®
const downButtonRange = "B3"; //ããŠã³ãã¿ã³ ã»ã«äœçœ®
const spinRangeAdd = "A2:B3"; //æäœç¯å²
const targetSheet = "ã¹ãã³2";ã//䜿çšããã·ãŒãå
const num = 1;ã//墿žå€
const range = e.range;
const rangeAdd = range.getA1Notation();
const sheet = range.getSheet();
if(sheet.getName() != targetSheet) return;
if(rangeAdd != upButtonRange && rangeAdd != downButtonRange) return;
const flag = rangeAdd == upButtonRange? 1 : -1 ;
const spinRange = sheet.getRange(spinRangeAdd);
spinRange.setValues([[spinRange.getValue() + num * flag,false],["",false]]);
}ä»åã®ã³ãŒãã®ãã€ã³ã
ååã® å³åœ¢ãå®è¡ãã¿ã³ãšããŠäœ¿ã ã¹ãã³ãã¿ã³ã®ã³ãŒããšã¯å°ãéããŸããããã€ã³ãã ãå°ã解説ããŸãã
if ãš äžé æŒç®å ã§æ¡ä»¶åå²
ããªã¬ãŒã€ãã³ãã® e ãã 倿Žããã£ãäœçœ®ã A1圢åŒã§ååŸ( rangeAdd )
ãåããÂ å€æŽã®ãã£ãã·ãŒãåãååŸããããšã§ã
if(sheet.getName() != targetSheet) return;
if(rangeAdd != upButtonRange && rangeAdd != downButtonRange) return;ã·ãŒãåã ã¹ãã³2ã§ã¯ãªãç·šé ïŒ ã¹ãã³2以å€ã®ã·ãŒãã®ç·šé
ã¹ãã³2 ã® B2ãB3 以å€ã®ã»ã«ã®ç·šé
ããã㯠åŠçã宿œããã«çµäºãšããŠããŸãã
ããŸã« GASã®å®è¡åæ°å¶éãæ°ã«ããŠ
ããããšããã·ãŒããç·šéãããæã ãããªã¬ãŒå®è¡ããããããã©ãããã°ãããïŒã
ãšãã£ã質åãèŠãããŸãããæ®å¿µãªãããç·šéæããªã¬ãŒãã¯Â ç·šéãããã æŒããªãçºåããŸãã ç¹å®ã®æ¡ä»¶ã§çºåãããããšã¯åºæ¥ãŸããã
ã©ããªç·šéã§ã ç·šéæããªã¬ãŒã§GASãå®è¡ããããªãã察象ã®ã·ãŒãã察象ã®ã»ã«ä»¥å€ã®ç·šéïŒåŠçãå®è¡ããªãæ¡ä»¶ã®å ŽåïŒã¯ã ãã¡æ©ãçµããããããšã倧åã§ãã
ãããŠããã®ifæãééããæç¹ã§ç·šéãããã»ã«ã¯ãtargetSheet ïŒã¹ãã³2ïŒã® B2ã»ã«ãB3ã»ã«ã®ã©ã¡ãããšãªããŸãã
const flag = rangeAdd == upButtonRange? 1 : -1 ;ãšããããšã¯ããã® äžé æŒç®åã§Â
倿Žãããã»ã« rangeAdd 㯠B2
flag ã»ã»ã» 1
倿Žãããã»ã« rangeAddã B3 ïŒupButtonRange ã§ã¯ãªãïŒ
flag ã»ã»ã» -1
ãšãããããšãåºæ¥ãŸãã
ãã® flagã䜿ã£ãŠ æ°å€ã ãã©ã¹ããããã€ãã¹ããããå¶åŸ¡ããŸãã
ãããŠ è€æ°ã»ã«ç¯å²ã« getValueÂ
const spinRange = sheet.getRange(spinRangeAdd); spinRange ã¯ãA2:B3ã®ç¯å²ãšãªããŸãã

éåžžã¯åäœã»ã«ã®å€ãååŸããå Žå㯠getValue
è€æ°ã»ã«ïŒç¯å²ïŒããå€ã äºæ¬¡å é åã§ååŸããå Žå㯠getValues
ãšãã䜿ãåãã§ããããããŠ
spinRange.getValue()
ãšããŠãA2:B3ã®ç¯å² ã«å¯Ÿã㊠getValue ã䜿ãããšã§ ç¯å²ã®å·Šäžã®èµ·ç¹ã»ã«ïŒA2ïŒã®å€ãã€ãŸã ã¹ãã³ããã æ°å€ã® 4ã ããååŸããŠããŸãã
â»è€æ°ã»ã«ç¯å²ã«å¯Ÿã㊠getValueã䜿ããš ç¯å²ã®å·Šäžã®èµ·ç¹ã»ã«ã®å€ãååŸããŸãã

spinRange.getValue() + num * flag
ãã®ããã«ããããšã§ãã¹ãã³ãããïŒA2ã»ã«ã®æ°å€ã« numãå ç®ãŸãã¯æžç®ãããïŒ æ°å€ãçæããŠããŸãã
æåŸã®spinRangeãžã®Â  setValuesã¯ äºæ¬¡å é åãçšæããŠãããå¿ èŠãããã®ã§ã

â ã®ãã㪠ã€ã¡ãŒãžã®äºæ¬¡å é åãå¿ èŠãšãªããŸãã ãããã
[ [ spinRange.getValue() + num * flag , false ] , [ "" , false ] ]
ã®éšåã§ãã
ãã§ãã¯ããã¯ã¹ã® ON/OFF 㯠true, false ã æžã蟌ãã°OKã
ããã¡ãã£ãšå¯èªæ§ã®é«ãã³ãŒãã®æ¹ãè¯ãããã»ã»ã»ãšæããŸãããååã®GASã«ããã¹ãã³ã®åããããŸãã«ã ã¢ãã¿ãªããŠãããã©ãŠãããããŸãã
ãªãã¹ãgetãsetç³»ã¡ãœããã䜿ããªãããšã§ãå°ãã§ãåŠçé床ãäžããããšããæ¶ããŸããåªåãããŠããããã§ãïœ
onEditã§åãã ã¹ãã³ãã¿ã³ã詊ããŠã¿ãã
onEditãªã®ã§ãã¹ã¯ãªããã®æ¿èªã¯äžèŠãªã®ã楜ã§ããã
æ©éåãããŠã¿ãŸãããã

ãã£ããæã¯ãããã®ã®ããã¿ã³å®è¡ã®æã«æ¯ã¹åãã¯ãããªã£ãå°è±¡ã
ãããããããã£ããã¹ã¯ãªãããå®è¡ããŠããŸããã®æåã衚瀺ãããªãã ãã§ããã ãã¶ãã·ãããªãã§ããããïŒ
ãã§ãã¯ããã¯ã¹ããã¿ã³ã£ãœãèŠããçºã«ãæ¡ä»¶ä»ãæžåŒã§ â²PLUS ãš âŒMINSU ã®è¡šèšã ãã§ãã¯å ¥ã ã®æã¯ æ¿ã衚瀺ãããŠãŸãã

ãããªæãã®ã¡ãã£ãšãã工倫ããããšæ ããŸããã
æ©ãã¯ãªãã¯ã«å¯Ÿå¿ã§ããã詊ããŠã¿ãã
ããå°ãæ©ãã¯ãªãã¯ã詊ããŠã¿ãŸãããã

äžèšã¯ 1ç§éã«2åãããã®ããŒã¹ã§ã10å ON/OFFãç¹°ãè¿ããŠããŸãã
ããŒããã¯ãªãã¯ã«åŠçã远ãä»ããŠãªã®ããªãšãæ¬æ¥ 10ãšãªãã¯ãã æçµçã« 1åæŸããããªãã£ãããã§ã 9ã§çµäºãã¡ãããŸããããã¿ã³å®è¡ããã¯Â è¯ãã¯ãªã£ãŠããã©ãæããæãã§ãã
äœæçã«ã¯ã3飿ãŸã§ãªãæ©ãã¯ãªãã¯ã§ã倧äžå€«ããã§ãã
ã¹ããïŒã¢ããªçïŒã§ãåãããŠã¿ãã
ã¹ããã§ã®åäœã確èªããŠã¿ãŸããããç»å㯠Androidã§ãããä»åã®ã¹ã¯ãªããã§ããã° iPhoneçã åãæåã§ãã

ãµã¯ãµã¯ãšã¯èšããŸããããããœã³ã³ã®ãã©ãŠã¶ã§åãããæãšãã»ãŒåæ§ã®æèŠã§äœ¿ããŸãããªããªãè¯ãããããªãã§ããããã
åºæ¥ãããšãåºæ¥ãªãã£ãããšããã®ä»ã®ãã€ãã¹ãã€ã³ãããŸãšããŠã¿ãŸãããã
A2.ã¢ãã€ã«å¯Ÿå¿ onEdit ã§åãã¹ãã³æ©èœã§ãå®çŸã§ããããš ïŒ æ³šæç¹
ã»A2ã»ã«ã®æ°å ã¹ãã³ãã¿ã³ã§ 墿žãããããâãOK
ïŒä»¥äžã¯è¿œå èŠä»¶ïŒ
ã»ã§ããã° Excelã¿ããã« ãµã¯ãµã¯åãããããâãâ³ïŒå°ããã·ïŒ
ã»ã§ããã° ã¹ããïŒã¢ããªçïŒã§ã䜿ãããšãããâãã
ã»å¢æžã®å€ã¯ ã«ã¹ã¿ã ã§ãããšããã 5ãã€ãšãã â ã
ã»ã»ã«åºå®ã§ã¯ãªããã¢ã¯ãã£ãã»ã«ã§ã¹ãã³æ©èœäœ¿ãããããïŒ â Ã
ïŒãã®ä»ã®è¯ãç¹ ïŒ
ã»ã¹ã¯ãªããã®æ¿èªãäžèŠïŒãŠãŒã¶ãŒãžã®å±éãæ¥œïŒ
ã»æ¡ä»¶ä»ãæžåŒãšçµã¿åãããŠããã¿ã³ã£ãœãè¡šç€ºåºæ¥ã
ïŒãã®ä»ã®æ³šæç¹ïŒ
ã»ãã§ãã¯ããã¯ã¹ãåé€ããŸãã¯ç§»åãããããå¯èœæ§ããã
ã»é£æãããšã¹ãã³ã远ãä»ããªãããšããã
çµæãšããŠã¯ããã¿ã³ã«ã¹ã¯ãªãããå²ãåœãŠããããã ãã¶è¯ãã§ããã
ç¹ã«ãäŸã®ãã¹ã¯ãªãããå®è¡ããŠããŸãã衚瀺ããªãã®ãšããŠãŒã¶ãŒæ¯ã«ååã®æ¿èªããªãã£ãŠã ãã§ããã ãã¶ã¹ãã¬ã¹ã軜æžãããŸããããŠãŒã¶ãŒã«ãå±éããããã§ãã
ãããŠã¹ãã察å¿ããŠããç¹ãé«è©äŸ¡ã
泚æç¹ãšããŠã¯ããŠãŒã¶ãŒããã§ãã¯ã§ãã = ãã§ãã¯ããã¯ã¹ãä¿è·ã§ããªãã£ãŠããšã§ã誀æäœã§ ãã§ãã¯ããã¯ã¹èªäœãæ¶ããããç§»åãããããããªã¹ã¯ãããã£ãŠããšã§ããããã
飿ããªããŠããäœ¿ãæ¹ãªããæªããªããšæããŸãã
ã§ãããã£ã±ã Excelã¹ãã³ã®ãµã¯ãµã¯åäœãšæ¯ã¹ã¡ãããšã»ã»ã»ã
ããã¯GASã® ãéçããªã®ãã
ä»å㯠onEditã§ åããã¹ãã³æ©èœãå®è£ ããŠã¿ãŸããã
æªãã¯ãªãã§ããããããµã¯ãµã¯æãæ±ããŠæ¬¡åã¯ é¢æ°ã§åãã ã¹ãã³ãæ€èšŒããŠã¿ãŸãããã
颿°ã§ã¹ãã³ãããçºã«ããŸããŸãäŸã®çŠè¡ã«æãåºãããšã«ïŒ