
ãAIãšäžç·ã«ãGoogleã¹ãã¬ããã·ãŒã è¡åé€ã§åŠã¶ GASã®ç¹°ãè¿ãåŠç 2
GASãã¿Â ååã®ç¶ãã§ãã
åå㯠Googleã¹ãã¬ããã·ãŒãã§ ãAåã«ãã§ãã¯ãã€ããŠããè¡ãåé€ããããšããGASãšããŠã¯ã·ã³ãã«ãªåŠçããé¡ãšããŠãç¡æã§äœ¿ãã代衚ç㪠3ã€ã®AIãã£ãã
ChatGPT
BingChat ïŒBingAIïŒ
Google Bard
ãã¡ãã®æŽ»çšãã¡ã€ã³ã«ãåå¿è ã GASã®ã³ãŒãäœæãé²ããéã®ãã€ã³ããªã©ãæžããŸããã
â ã·ãªãŒãºååã® note
ååã®GASã®ã³ãŒãã確èªããã
ãŸãã¯ãããŸã§ã®æµãããããããã€ã€ãååã¯è©³ããè§Šããããªãã£ãã³ãŒãã®äžèº«ãå°ã解説ããŠãããŸãããã
ååã®ãããã
Aåã®ïŒè¡ç®ä»¥äžã«ã¯ãã§ãã¯ããã¯ã¹ãããããã®ãã§ãã¯ããã¯ã¹ã«ãã§ãã¯ãã€ããŠãã è¡ãäžæ¬åé€ãããã
ãã¡ãã®ãé¡ã«å¯ŸããŠGoogleæ€çŽ¢ã ãã¯ãã®èšé²ããã㊠3ã€ã®AIãã£ããã«åãçžè«ããããšããã Google Bardã®åçã æã æ£è§£ã«è¿ããããã1ã«æã ã ä¿®æ£ãã以äžã®ã³ãŒãã§åŠçã¯å®çŸããããšãã§ããŸããã
//Bardã®åç ä¿®æ£
function delckline() {
//ãã§ãã¯ããã¯ã¹ã®äœçœ®(å)
const CKPOS = 1;
//ã¢ã¯ãã£ããªã¹ãã¬ããã·ãŒããšã·ãŒããååŸ
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
//æçµè¡ãååŸ
const lastRow = sh.getLastRow();
//æçµè¡ãã 1 ãã€æžãããªããããã§ãã¯ãå
¥ã£ãŠããè¡ãåé€
for (let i = lastRow; i >= 1; i--) {
//ãã§ãã¯ãå
¥ã£ãŠããå Žå
if (sh.getRange(i, CKPOS).getValue()==true) {
//è¡ãåé€
sh.deleteRow(i);
}
}
}ããããã³ãŒãããå®çªã® foræã«ããã«ãŒãåŠçã£ãŠã®ã¯ãåå¿è ãè±ããã人ãããããšã¯ãŒã«ãã«æ¬ ãããªãã£ãŠã®ãšã

ãã®éããããŸãã«ãåŠçãé ãã£ãŠåé¡ãããã
ã³ãŒãããã£ãšã¯ãŒã«ã«ããã
åŠçããã£ãšæ©ãããã
ãããã解決ãããïŒ ã£ãŠãšããŸã§ããååã®æµãã§ãã
deleteRow ãš deleteRows
å°ãã³ãŒããèŠãŠãããŸããããå®éã«è¡ãåé€ããåŠçã¯
sh.deleteRow(i);
ãã®éšåã§ãããsh(ã·ãŒãïŒã«å¯ŸããŠÂ deleteRow( è¡çªå· ) ãšããããšã§ããã®ã·ãŒãã® ãè¡ç®ãåé€ããããšãã§ããŸãã
ãã ããè¡çªå· ã®ãšãã㯠1ã€ã®æ°å€ã§åäœã®è¡ãæå®ããå¿ èŠããããŸãããã®åŠçã§åé€ã§ããã®ã¯1è¡ã ãã§ãã
ã€ãŸã
ã âããã¯åºæ¥ã ïŒåé€ã§ããïŒ
sh.deleteRow(3) ã»ã»ã» 3è¡ç®ãåé€
sh.deleteRow(20) ã»ã»ã» 20è¡ç®ãåé€
â âããã¯ã§ããªã ïŒãšã©ãŒãåºãïŒ
sh.deleteRow([2,4,6]);ãã»ã»ã» 2,4,6è¡ç®ãåé€ããã
â»ãšã©ãŒã¡ãã»ãŒãžãException: Cannot convert '2,4,6' to int.
ãããªæå®ã¯åºæ¥ãŸããã
ã¡ãªã¿ã« deleteRows ãšããã¡ãœãããå¥ã«ãããã§ããããã¡ãã¯
deleteRow( è¡çªå· , è¡æ°)
ãšããæžãæ¹ã§äœ¿ããã®ã§ããè¡ç®ããÃè¡åãåé€ãã ãšãã£ã圢ã§ãé£ç¶ããè€æ°è¡ããŸãšããŠåé€ããéã«äœ¿ããã®ã§ãã
ä»åã®ããã«é£ã³é£ã³ã®è¡ãåé€ããéã«ã¯é©ããŸããã
ãã®èŸºãã®è©³çŽ°ã¯ ä»ã®ãµã€ããåèã«
ãšããããã§ãé£ã³é£ã³ã®è€æ°è¡ãåé€ããçºã«ã¯ deleteRow ãç¹°ãè¿ãå®è¡ããå¿ èŠããããŸãã
foræã¯ã«ãŒãïŒç¹°ãè¿ãïŒã®åºæ¬
ãã®ç¹°ãè¿ãåŠçéšåã®èšè¿°ã
for ( let i = lastRow;Â i >= 1;Â i-- ) {
ããã§ããããã®éšåã¯
for ([åæååŒ]; [æ¡ä»¶åŒ]; [å ç®åŒ])Â
åæååŒãlet i = lastRowãiã¯æçµè¡ããéå§Â
â» letã¯çç¥å¯èœ
æ¡ä»¶åŒãi >= 1ãiã1以äžã§ããã°åŠçãè¡ã
â» æ¡ä»¶ãæºãããªãå Žåã¯çµäºïŒã«ãŒããæããïŒ
å ç®åŒãi--ãåŠçãçµãã£ãã iã -1ããŠã«ãŒã
â» iã +1ããå Žå㯠i++
ãã®ããã«ãªã£ãŠããŸãã
æçµè¡ããéå§ã㊠i-- ããŠããéã«ãŒãã䜿ã£ãŠããã®ã¯ãè¡åé€ãšããåŠçã§äœ¿ãããææ³ã§ãã
æ®éã« 1è¡ç®ããéå§ããŠäžã«åŠçãç¹°ãè¿ããå Žåã1è¡ç®ãåé€ããæç¹ã§ãããšããšïŒè¡ç®ã ã£ãè¡ã¯ïŒè¡ç®ã«å€ãã£ãŠããŸããŸãã
1è¡ç®ã®åŠçãçµãã£ãã®ã§ +1ã§æ¬¡ã«2è¡ç®ã®åŠçã«ç§»ã£ãŠããŸããšãå ã 2è¡ç®ã ã£ãè¡ã¯åŠç察åŠãããæŒããŠããŸãããã§ããããã鲿¢ããçºã«æçµè¡ãã äžã«åŠçãåãéã«ãŒãã䜿ã£ãŠããŸãã
ããã«ã€ããŠã¯ååãAIã«ãåçããŠããããŸãããã
foræã¯åºæ¬äžã®åºæ¬ãªãã§ãããéã«ãŒãããããããã¿ãŒã³ã§ãããGASãæžããŠããš foræã¯é£œããã»ã©ç»å Žãããã§ãã ãã ãéãæžãæ¹ããããªãŒã£ãŠãªã£ãŠããŸãã
ãŸããã¹ãã¬ããã·ãŒãã§ã®GASã¯ãè¡ãåã®ç¯å²ãååŸãã äºæ¬¡å é ååŠçãå€ãçºãforã® å ¥ãåãç»å Žããã±ãŒã¹ãå€ããã©ãããŠãã³ãŒããåé·ã«ãªããã¡ã§ãã

ãããããš éãæžãæ¹ã«æãåºããããªããã§ãããåºæ¬ã§ãã foræãçè§£ããã«å¿çšã«æãåºãã®ã¯ NGã§ãã
ãã£ãã foræãæžããããã«ãªã£ãŠããæ¬¡ã®ã¹ãããïŒé åã¡ãœããïŒã«é²ã¿ãŸãããã
ããšãã³ãŒãã®èŠãç®ã¯ãšããããåãåŠçã ãš æå€ãšåºæ¬ã® foræã®æ¹ãåŠçéåºŠãæ©ãã£ãŠããšãå€ãã§ããããŒã¿éãèšå€§ã ãšå·®ãã§ãããšããããŸãã
AIã« GASã®ã³ãŒããã¯ãŒã«ã«ããŠåŠçé床ãäžããŠãããã
åºæ¬ãæŒãããäžã§ãAIãã£ããã«ã³ãŒããæããããŠä¿®æ£ããŠããããããã詊ããŠã¿ãŸãããã
ãªããæè¿ã®AIãã£ããã¯éå»ã®ãããšããå±¥æŽãšããŠä¿æããŠãããç¶ããšããŠãã£ãããåéããããšãåºæ¥ãŸãããä»åã¯3ã€ã® AIãæ£ããæ¯èŒããããã« æ°èŠã¹ã¬ãã ã§ååã®æçµã³ãŒããæž¡ããŠã³ãŒãä¿®æ£äŸé Œããã圢åŒãšããŸãã
AIã«ãªã¯ãšã¹ã1ãGASã®ã³ãŒããã¯ãŒã«ã«ãããã
以äžã®GASã®ã³ãŒããã¯ãŒã«ã«ããã
ãã㊠ããã³ããçã®ãäœæ³ã¯æèããããµãã£ãšãã質åã§ãã£ãŠã¿ãŸãããã
ChatGPTã®å Žå

ããŒã 倿°åãå€ãããã³ã¡ã³ããå ¥ãããã§ãèªã¿ããããªã£ããšãããªãããªãã§ããããã®ååé·ã«ãªã£ãæãããæ ¹æ¬ã¯å€ãã£ãŠãŸãããã
ãã¡ãã®åžæããã¯ãŒã«ãšã¯ã¡ãã£ãšéããŸããã
BingChatã®å Žå

ã³ãŒããè¿ããŠãããŸãããã
ããªãã§ãçžè«ãããããšããäžåžã«ä»äºã®çžè«ããããã¢ããã€ã¹ãããªã説æããããããªæ°åã§ãïœ
ãã¯ããã¯ãŒã«ã«ããšããæœè±¡çãªãªã¯ãšã¹ãããAIãžã®äŸé ŒãšããŠãããªãã®ãããããŸããã
Google Bardã®å Žå

ã¯ãŒã«ãã¯åŸ®åŠã§ãããæ°ããã³ãŒããæç€ºããŠãããŸããã
ãã¯ã GASé¢é£ã¯Bardã匷ãã®ãã
Bardãè¿ããè¡åé€ã³ãŒãïŒã¯ãŒã«ã«ä¿®æ£çïŒãèŠãŠã¿ãŸãããã
// 颿°åã倿Žãã
function deleteCheckedRows(checkBoxPos) {
// ãã§ãã¯ããã¯ã¹ã®äœçœ®ã颿°åã§åç
§ã§ããããã«ãã
const CKPOS = 1; //Aåãªãã§ããã ãBardã®åçã1ã«ä¿®æ£
// ã¢ã¯ãã£ããªã¹ãã¬ããã·ãŒããšã·ãŒããååŸ
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
// æçµè¡ãååŸ
const lastRow = sh.getLastRow();
// ãã§ãã¯ãããè¡ãé
åãšããŠååŸãã
const checkedRows = Array.from(sh.getDataRange().getValues(), row => row[CKPOS] === true);
// é
åãããã§ãã¯ãããè¡ãåé€ãã
for (const row of checkedRows) {
sh.deleteRow(row);
}
}Arrya.from ãšããé åã¡ãœãããšã¢ããŒé¢æ°ã䜿ã£ãããã£ãœãïŒåå¿è ã£ãœããªãïŒã³ãŒãã§ã¯ãããŸããã
ã§ããArray.from 㯠æååããªããžã§ã¯ãããé åçæããã±ãŒã¹ã§äœ¿ãå°è±¡ã§ãããé åãã Array.from ããŠã ã¶ã£ã¡ãã map ãšåããªãã§ãä»åã®ã±ãŒã¹ã§ç»å Žããå¿ èŠæ§ã¯ãããŸãããã
ãããããããã¯ã³ãŒãééã£ãŠããã§ åããŸããã
çŽæ¥å®è¡ãããã®ã§Â const CKPOS = 1 ãšããŠã

ãã®ããã«ãšã©ãŒã«ãªããŸããã¶ã£ã¡ãã
// ãã§ãã¯ãããè¡ãé
åãšããŠååŸãã
const checkedRows = Array.from(sh.getDataRange().getValues(), row => row[CKPOS] === true);ãã®éšåã¯ããã³ã¿ã©ãããå€ããã§ãã
ãããããŒã¹ã« åã圢ã«ä¿®æ£ããŠããããã§ãããçµå±ããŸãã¯ãŒã«ã«ã¯ãªããªããã§ãä»åã¯å²æããŠåŸã§ mapãäœ¿ãæ¹æ³ã玹ä»ããŸãã
AIã«ãªã¯ãšã¹ã2ãGASã®ã³ãŒããåŠçéåºŠãæ©ããªãããã«ä¿®æ£ããŠã
ãã¯ãŒã«ã«ããããã¯ãµãã£ãšãããã ã£ãã®ããããŸããããŸããã§ãããããã§ã¯
以äžã®GASã®ã³ãŒããåŠçéåºŠãæ©ããªãããã«ä¿®æ£ããŠ
ããã§ãã£ãŠã¿ãŸãããã
ChatGPTã®å Žå

ãªãã»ã©ã
è¡ã®åé€ããŸãšããŠè¡ãïŒåè¡ãåé€ãã代ããã«ãåé€å¯Ÿè±¡ã®è¡ãäžåºŠã«ãŸãšããŠç¹å®ããããããäžæ¬ã§åé€ããŸããããã«ãããã«ãŒãå ã§è¡ãåé€ããåæ°ãæžå°ããåŠçé床ãåäžããŸãã
ããŒã¿ãäžæ¬ã§èªã¿åãïŒåè¡ã§ã»ã«ã®å€ã1ã€ãã€èªã¿åãã®ã§ã¯ãªããããŒã¿ãäžæ¬ã§èªã¿åããåŠçããããšã§å¹çãåäžããŸãã
èšã£ãŠãããšã¯æ£ãããã§ãã åçã®ã³ãŒã
function deleteCheckedRows() {
// ãã§ãã¯ããã¯ã¹ã®äœçœ®ïŒåïŒ
const CKPOS = 1;
// ã¢ã¯ãã£ããªã¹ãã¬ããã·ãŒããšã·ãŒããååŸ
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
// ããŒã¿ç¯å²ãäžæ¬ã§èªã¿åã
const data = sh.getRange(1, CKPOS, sh.getLastRow(), 1).getValues();
// åé€å¯Ÿè±¡ã®è¡ãæ ŒçŽããé
å
const rowsToDelete = [];
// ãã§ãã¯ãå
¥ã£ãŠããè¡ãç¹å®
for (let i = 0; i < data.length; i++) {
if (data[i][0] === true) {
// ã·ãŒãäžã®è¡çªå·ã«å€æããŠé
åã«æ ŒçŽ
rowsToDelete.push(i + 1);
}
}
// è¡ãäžæ¬ã§åé€
if (rowsToDelete.length > 0) {
sh.deleteRows(rowsToDelete);
}
}ãããå®è¡ãããšãšã©ãŒã«ãªããŸãã

ãããããã§ããæåã«æžããéããdeleteRows㯠ãŸãšãŸã£ãè€æ°è¡ãäžæ¬åé€ããã¡ãœããã§ãã£ãŠããã®ãããªé£ã³é£ã³è¡ã®äžæ¬åé€ã¯åºæ¥ãŸããããé åãåŒæ°ã«ãšããŸããã
èãæ¹ã¯åã£ãŠãŸããã2çªç®ã® ãããŒã¿ãäžæ¬ã§èªã¿åãã ã§ getValues()ã䜿ããšãããŸã§ã¯æ£ããã§ããæããã
BingChatã®å Žå

ããŒãããªãã ããããã
ãã®ã³ãŒãã¯AIã«ãã£ãŠäœæããããã®ãããªããŠãåãªã質åã®ã³ãŒãã®ãªãŠã è¿ããªãã§ããã»ã»ã»ã
ãä¿®æ£ããæ¹æ³ããããŸãããšããã€ã€

ããã§çµããã»ã»ã»ã ãšã»ã»ãã
ãã¯ã Microsoft㯠GASïŒGoogleïŒãšçžæ§æªãã®ãããããšãå®å šã«å«ããããªã®ãïœ
Google Bardã®å Žå

ä»åãããã£ãœãã³ãŒããè¿ã Bardã

ãã皌åãã¹ããããŸãã颚ã«åçããŠãŸããã»ã»ã»
ããŠããŠãå®è¡ãããã©ããªé床ãåºãã®ããª

ããºãªãŒãïŒïŒïŒããºãªãŒãã¯äžåé¢ä¿ãããŸããïŒ
Bard ãçµæ§GASã®ã³ãŒãã®åçãã¹ãããŸããã
çŽ äººã¿ãã㪠getRange() ã ããã£ãŠ getValue() ãªãã§ å€ãåããŠããšåéãããŠããã¹ã§ãããã
ã¡ãªã¿ã«
 //ä¿®æ£å
const checkedRows = sh.getDataRange().filter(row => row[CKPOS] === true);
//ä¿®æ£åŸ
const checkedRows = sh.getDataRange().getValues().filter(row => row[CKPOS-1] === true);ãã®ããã«ä¿®æ£ããŠããããš åãã¯ããŸãããçµå±ããã§åŸããã checkeRows ã䜿ã£ãŠè¡åé€åŠçãèµ°ãããŠã

ã¿ã€ãã«è¡å«ã äžãã10è¡åé€ãããã ãã§ãã
ããŒããä»åã¯äžè³¢è ããã£ãŠ åŸ®åŠãªåçã§ãããã
ãã¡ããã質åã®ä»æ¹ïŒããã³ããïŒã工倫ããã° æ±ããŠããåçãåŸãããå¯èœæ§ããããŸãããããã§æéè²»ãããŠAIã®ãæ©å«ãåãã®ããªãã ããªãŒã£ãŠæãã§ãããã
çµå± åçãééã£ãŠãããªã¹ã¯ã¯åžžã«ããããã§ããããã³ãŒãã£ã³ã°ã«AIãã£ãããæŽ»çšããå Žåã åçã®ã³ãŒããããçšåºŠçè§£ã§ããåºç€ç¥èã¯å¿ èŠã£ãŠããšã§ãã
GASã®ã³ãŒããã¯ãŒã«ã«ããŠåŠçé床ããããïŒäººåïŒ
ããŠãAIã®åçã§ã¯æããããªçµæãåŸãããªãã£ãã®ã§ã人åã§åãçµãããšã«ããŸãããã
//å
ã®ã³ãŒã
function delckline() {
//ãã§ãã¯ããã¯ã¹ã®äœçœ®(å)
const CKPOS = 1;
//ã¢ã¯ãã£ããªã¹ãã¬ããã·ãŒããšã·ãŒããååŸ
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
//æçµè¡ãååŸ
const lastRow = sh.getLastRow();
//æçµè¡ãã 1 ãã€æžãããªããããã§ãã¯ãå
¥ã£ãŠããè¡ãåé€
for (let i = lastRow; i >= 1; i--) {
//ãã§ãã¯ãå
¥ã£ãŠããå Žå
if (sh.getRange(i, CKPOS).getValue()==true) {
//è¡ãåé€
sh.deleteRow(i);
}
}
}ãã®ã³ãŒããã¯ãŒã«ã§åŠçéåºŠãæ©ãä¿®æ£ããã«ã¯ãã©ããã©ããªããã°è¯ãã®ãïŒ
ã³ãŒãä¿®æ£ã®ãã€ã³ã
AIã®åç㯠ã³ãŒãèªäœã¯åããªãã£ããã€ãã€ãã§ããããå®ã¯ 説æã®äžã«ã¯ãã³ãããããŸããã
ã³ãŒããã¯ãŒã«ã«ããã
ãâãforæã®ä»£ããã«é åç³»ã¡ãœããã䜿ã
ãâãã³ãŒããçãããæžãæ¹ã«å€ããïŒå¯èªæ§ãèœã¡ãå¯èœæ§ããïŒ
åŠçé床ãäžããã
ãâãgetValues()ãªã©ã䜿ã getãsetãªã© APIããããåæ°ãæžãã
ãã®èŸºããã³ãŒãã«èœãšããããã°è¯ãããã§ãã
å ã®ã³ãŒãã§ç¹ã«åé¡ãªã®ã
sh.getRange(i, CKPOS).getValue()forã®äžã§ãã²ããã getValue() ãç¹°ãè¿ããŠããã³ã³ã§ãïŒ
ãŸãã¯ããã getValues()ã§ 1åã§ãŸãšããŠå€ãååŸÂ ããæžãæ¹ã«å€æŽããŠããåŠçãé²ããŸããããããã ãã§ãé床ãçµæ§å€ãããŸãã
ååŸããé åã¯ãé åã¡ãœãã ã§åŠçããã°ã¯ãŒã«ãã¢ããã§ããã
ã³ãŒããçãããŠãããã€ã³ã ã·ãŒããšã»ã«ç¯å²
GASã®ã³ãŒããçãã·ã³ãã«ã«èšè¿°ãããšãã¯ãŒã«ãªæãã§ çŽ äººã£ãœããæããŸãã
ããšãã°å ã³ãŒãã®æåã®éšå
//ã¢ã¯ãã£ããªã¹ãã¬ããã·ãŒããšã·ãŒããååŸ
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();ãã®ããã«æžããŠãŸãããä»åã®åŠç㯠éããŠããã·ãŒã ïŒã¢ã¯ãã£ãã·ãŒãïŒã ãã®åŠçãªã®ã§ãss ã¢ã¯ãã£ããªã¹ãã¬ããã·ãŒã ã䜿ããŸããã
ã ããã
//ã¢ã¯ãã£ããªã·ãŒããååŸ
const sh = SpreadsheetApp.getActiveSheet();ãã®ããã«æžãããšãã§ããŸãã
æåå®è¡ã§éããŠããäžã€ã®ã·ãŒãã ãã®åŠçãªãããã®ããã«ã¹ãã¬ããã·ãŒãã®ååŸããã£é£ã°ãããšãå¯èœã§ãã
â»æéããªã¬ãŒã§åŠçããå Žåã¯ãã·ãŒãåã§ã·ãŒããååŸããå¿ èŠããããŸãã
ãã®ããã§ ãã§ãã¯ããã¯ã¹ã®åã®å€ããã®ããã«ååŸãããã
//ãã§ãã¯ããã¯ã¹åã®å€ãååŸ
const values = sh.getRange(1,1,sh.getLastRow()).getValues();ãŸã㯠ããŒã¿ã®åæ°ãå€ããªããã°
//ãŸãšããŠå€ãååŸ
const values = sh.getDataRange().getValues();ãã®ããã«ãŸãã£ãšååŸããŠãåŸã§åŠçã®éã« ãã§ãã¯ããã¯ã¹ã®åã ãã䜿ã£ãŠãããã§ãã

ååŸã§ããå€ã¯ãããªæãã®éãã
ä»åã¯ããã³ãŒããçããŠæžã getDataRange() ã®æ¹ã䜿ãããšã«ããŸãããã
getDataRange()ã¯ã·ãŒããã A1ãèµ·ç¹ãšããŠããŒã¿ãããç¯å²ããŸãã£ãšååŸããã¡ãœããã§ãã

ãããã getValues() ã§ååŸããå€ã¯ãå³ã®ãããª äºæ¬¡å é åãšãªããŸããïŒé åã®äžã«é åãããç¶æ ïŒ
ããã 倿° values ã«æ ŒçŽãããŸããã
å€ã®ååŸã¯ãã®1åããã® getValues()ã ããªã®ã§ãåŠçæéãå€§å¹ ã«ççž®ã§ããŠããŸãã
GASïŒJavaScriptïŒã® map ãš filter
æçµçã«deleteRow(è¡çªå·) ã§åé€ããããšã«ãªãã®ã§ããã®äºæ¬¡å é åïŒvaluesïŒãã åè¡ã®å é éšåã true ãšãªã£ãŠãã åé€å¯Ÿè±¡ã®è¡çªå·ã ãæ¬²ããããã§ãããã©ã®ããã«ååŸããã°ãããïŒ
ããã§äœ¿ããã®ãã·ãŒã颿°ã§ã倧掻èºã® mapããã㊠filter ã§ãã
æé ãšããŠã¯
map ã®åŠç
åè¡ïŒèŠçŽ ïŒ ã® å é ã trueã§ããå Žå㯠index + 1Â
ãã以å€ã¯ç©ºçœãè¿ã
â
filter ã®åŠç
空çœãé€å€
ããããã§ãŒã³ã¡ãœããã§ç¹ããŠã çµæïŒè¿ãå€ïŒã rowNum ã«æ ŒçŽãšããæµãããã£ãŠã¿ãŸãããã
é å㯠0ã¹ã¿ãŒããªã®ã§ãè¡çªå·ã«å€æããå Žå㯠+1ãå¿ èŠãšãªããŸãã
ãŸãåã®æ¹ãé ååã§ 0ã¹ã¿ãŒããšãªãã®ã§ã1ãã€ãã¹ããŠÂ
row[CKPOS-1] (ä»åã®å Žåã¯çµæçã« row[0] ïŒ
ã ãã§ãã¯ããã¯ã¹ã®å€ãšãªããŸãã
â ãããªã³ãŒãã«ãªããŸãã
const rowNum = values.map((row,i) => row[CKPOS-1]==true? i+1:"").filter(v => v);åŠçã®æµãã¯ãããªæãã

row[0]ã®ãšããã¯Â row[CKPOS-1] ã®èšè¿°ãã¹
map ã®äžã§äœ¿ã£ãŠããã®ã¯ã=> ã§èšè¿°ãã ã¢ããŒé¢æ° ãš ifæã®ã·ã§ãŒããã³ã äžé æŒç®åã§ãã
ã¢ããŒé¢æ° ã äžé æŒç®åã 䜿ãããšã¯ãŒã«ãªå°è±¡ãããŸããã
mapã§ã¯èŠçŽ ã®æ°ã墿žã§ããªãã®ã§ãmapåŠçåŸã« filterã§ç©ºãé€å»ããå¿ èŠããããŸããããã以äžã®éšåã
array.filter( v => v )
ããã¯ãã䜿ããã空çœé€å»ã®æžãæ¹ã§ããã
v => vÂ
ãïŒã£ãŠãªããŸãããå³ã® v 㯠v ã çåœè©äŸ¡ããŠããŠãæååã 0以å€ã®æ°å€ã true ãšæ±ããã ããšãå©çšããŠããŸãã
ããã«ãã£ãŠ åé€ãã è¡ã®è¡çªå·ãååŸããããšãåºæ¥ãŸããã

åå¿è ãããããã¡ãªã®ããé åã¡ãœããã®åŒæ° (ä»åã ãš row,i ãšã vãšãïŒã 倿°ãšæ··ä¹±ããŠã宣èšããªã«ãããŠãªãã®ã«ãããªãç»å ŽããïŒïŒãšãªããã¿ãŒã³ã
ã§ããããä»ã¯ ã·ãŒã颿°ã® LAMBDA ãã«ããŒé¢æ°ã® MAPã§ãåºãŠããŸãããã
æåã¯çè§£ã远ãä»ããªããããããŸããããç¹°ãè¿ãæžããŠãããã¡ã«ãªããšãªãè ¹èœã¡ããŠããŠãèªç¶ã«äœ¿ããããã«ãªããŸãã
getValues()ã§ååŸãã äºæ¬¡å é åãããåé€å¯Ÿè±¡ã®è¡çªå· ã®äžæ¬¡å é åãžã®å€æã1è¡ã§èšè¿°ã§ããŸãããã¯ãŒã«ïŒ
GASïŒJavaScriptïŒã® flatMap
ãã® map ã㊠filter ã§ãååãªãã§ãããå®ã¯ããã ãš2ååŠçãåããŠããã§ãããéå¹çã ã£ããããŸãã
å šãŠã®ã±ãŒã¹ã§åºæ¥ãããã§ã¯ãªãã®ã§ãããä»åã¯æçµçã« è¡çªå·ã®äžæ¬¡å é åãåŸãããã°è¯ãã®ã§ãflatMapãšããã¡ãœããã䜿ãããšã§äžçºåŠçãå¯èœã§ãã
flatMapã¯ãmapåŠçãããããã§ é åããã©ããå ããã¡ãœããã§ãã
ããã»ã©ã® map ã㊠filter ã®ã³ãŒãã¯ãflatMapã§ä»¥äžã®ããã«æžããŸã
const rowNum = values.flatMap((row,i) => row[CKPOS-1]==true? i+1:[]);
map ã® ã¢ããŒé¢æ°ã®éšåãã¡ãã£ãšå€ãã£ãã ãã§ããã
mapã®æ
row[0]==true? i+1 : ""
flatMapã®æ
row[0]==true? i+1 : []Â
ãã㯠flatMap ã®æ¹ã¯ Aåã true ã§ã¯ ãªãæã« 空é å [] ãè¿ãããšã§ããã©ããååŠçããããæã«ããã®éšåã®èŠçŽ ãåé€ïŒfilterã®å¹æïŒã§ãããšãããã¯ããã¯ã䜿ã£ãŠããŸãã
ãã£ã¡ã®æ¹ãçããŠãããã¹ããŒãã§ããïŒ
[ 2, 5, 12, 17, 18, 19, 23, 26, 27, 30 ] ãšãã åé€å¯Ÿè±¡ã®è¡çªå·ã®é åãã¯ãŒã«ã«ååŸåºæ¥ãŸããïœã
GASïŒJavaScriptïŒã® reverse ãš forEach
åé€å¯Ÿè±¡ã®è¡çªå·é å rowNum ã䜿ã£ãŠããããã è¡åé€ã®åŠçãåããŸãã
åŠçãç¹°ãè¿ãæã« é åã¡ãœããã䜿ãå Žåã¯ãforEach ã®åºçªã§ãã
ãã ãæ³šæãã¹ãã¯ãforã®æã«æçµè¡ãã éé ã§åŠçããã®ãšåãããã« äžã®è¡ããåé€åŠçãããªããš ãºã¬ãçããŠããŸããšããç¹ã
 MDNã®èª¬æã«ããããŸãããforEachã¯
é åã«å«ãŸããåèŠçŽ ã«å¯ŸããŠäžåºŠãã€ãæé ã§åŒã³åºããŸãã
ãšãããã®ã§ãïŒindexã®ïŒéé ã«åŠçã¯åºæ¥ãŸããã
ãã£ãŠãforEachã®åã«Â rowNum ãå転ãããŠããå¿ èŠããããŸãã
é åã¡ãœããã«ã¯ããŸãã«å転è¡åŒãè¡ãã reverse ããããŸããïŒããã·ãŒã颿°ã«ã欲ããïœïŒ
ããã»ã©ã® flatMapã®åŸãã«ãã§ãŒã³ã¡ãœããã§ãããå ããããšã§

[ 30, 27, 26, 23, 19, 18, 17, 12, 5, 2 ]
ãã®ãã㪠åé€å¯Ÿè±¡ã®è¡ãäžãã䞊ã¹ãé åãåŸãããšãã§ããŸããã
ããšã¯ãã® rowNum ã䜿ã£ãŠ
rowNum.forEach(row => sh.deleteRow(row))ãããåããã¢ããŒé¢æ°ã§ è¡åé€ã®åŠçãæžãã°ããã§ããã
ãåç1ãã¹ããŒãã§åŠçéåºŠã®æ©ã è¡åé€ GAS
äžé£ã®æµãããŸãšããŠã宿ããã³ãŒãããã¡ãã
ã¹ããŒããªæãã¯ãããŸããã
//倿ŽåŸã®ã³ãŒã
function delckline2() {
//ãã§ãã¯ããã¯ã¹ã®äœçœ®(å)
const CKPOS = 1;
const sh = SpreadsheetApp.getActiveSheet();
const values = sh.getDataRange().getValues();
//ãã§ãã¯ãä»ããŠããåé€å¯Ÿè±¡ã®è¡ãéé ã§ååŸ
const rowNum = values.flatMap((row,i) => row[CKPOS-1]==true? i+1:[]).reverse();
//è¡ãåé€
rowNum.forEach(row => sh.deleteRow(row));
}é床ã¯ã©ãã§ããããïŒ åãããŠã¿ãŸãããã


çéãšã¯ãããŸãããã
å ã®ã³ãŒã 5.8ç§ãâãæ¹è¯åŸ 4.3ç§
ãš 1.5ç§ççž®ãããŠããŸãã
ããŒã¿éãå€ããã°ããã«å·®ã¯å€§ãããªãã500è¡6åã®ããŒã¿ã§ äžåã®äžã ãã§ãã¯ãå ¥ã£ãŠããå Žåã¯

ãã®ããã«
å ã®ã³ãŒã 77.6ç§ãâãæ¹è¯åŸ 42.0ç§ãïŒå·® 35ç§ïŒ
ãšçµæ§æ©ããªã£ãã®ãããããŸãã
çµå±ã»ãŒèªåãšãªããŸããããã¯ãŒã«ã§åŠçéåºŠã®æ©ã GASã宿ããŸããïœã
ã¡ãªã¿ã«ããã¡ãã®ã³ãŒã㯠ãã¯ããããããã㯠ãã¿ã³çã«ã¹ã¯ãªãããå²ãåœãŠãŠæåã§ã®å®è¡ãæ³å®ããŠããŸãã
ãã§ãã¯ãä»ããã èªååé€ããããã« onEdit ã§åããããããããã¯æéããªã¬ãŒã§ æ¯æ¥å€éã«ãããã§åŠçããããšãã£ãå Žåã¯ãã³ãŒããä¿®æ£ããå¿ èŠããããŸãã
å¥ã¢ãããŒãã§ã® è¡åé€åŠçãèãã
GASã®ç޹ä»ãæ€èšŒèšäºã§ããã° äžèšã§ååãªãã§ãããmir ã®note㯠ã¹ãã¬ããã·ãŒãã®ãã«æŽ»çšïŒïŒãéã³ïŒãç®çãšããŠããŸãã
æ¬åœã«äžã§äœæããã³ãŒãã§ååãªã®ãïŒ
ããä»¥äžæ©ãã¯ãªããªãã®ãïŒ
ããå°ãèããŠã¿ãŸãããã
è¡ã®äžæ¬åé€ã¯ ãã£ã«ã¿ã§åºæ¥ã

ããããåŒã£åŒµããŸããããå®ã¯ãã®äžæ¬è¡åé€ã¯ GASãªãã§ããµã¯ã£ãšåºæ¥ãåŠçãªãã§ãã
Excelã§ãåºæ¥ããã¯ããã¯ãªã®ã§ç¥ã£ãŠã人ãå€ãããšæããŸãããããã¯ãã£ã«ã¿ãäœ¿ãæ¹æ³ã§ãã
äžã®ããã«ãã§ãã¯ãããŠããè¡ã ãã衚瀺ãããããšã¯ããã£ã«ã¿ã䜿ãã°ç°¡åã«ã§ããŸãããå®ã¯ããã®ç¶æ ã§

ãã®ããã«è¡šç€ºãããŠããè¡ãäžãŸã§éžæã㊠åé€ãããšããã£ã«ã¿ã§è¡šç€ºãããŠãããã§ãã¯ãå ¥ã£ãè¡ã ããåé€ãããŸãã
éã«ããé衚瀺ã®ãã§ãã¯ã®ä»ããŠããªãè¡ã¯åé€ãããããã£ã«ã¿ãè§£é€ãããšãã§ãã¯ãããŠããªãè¡ã ããæ®ããã§ãã
ããã§ååãªæ°ãããŸããããã®æé ã ãã¯ããèšé²ã㊠ã³ãŒããçæã§ããã確èªããŠã¿ãŸãããã
åå CtrlãæŒããªããéžæããè€æ°è¡ã®åé€ããã¯ãèšé²ããéã¯ãæäœæ¥ã§ã¯åºæ¥ãã®ã« ãã¯ããèšé²ããŠå®è¡ããŠãåçŸãããªããšããã±ãŒã¹ããããŸããã
ä»åã¯ã©ããïŒ
èšé²ãããã¯ããå®è¡ããŠã¿ããšã»ã»ã»

ãããŸãããïœã
æåãšæåã®ãã£ã«ã¿ãšè§£é€ã®åããäžžèŠããªãã§å°ãã«ãã³æªãã§ãããåé€åŠçã«ã¯å°ãæéãããããŸãããããã§ãåŠçã¯ããªãæ©ãå°è±¡ã

æ¹è¯çã®ã³ãŒãã§ã 42ç§ããã£ãŠãã 500è¡ã®åŠçãããã®æ¹æ³ã ãš
42ç§ â 3.2ç§ãå§åçã¹ããŒãã§ãïŒ
ãåç2ãã¹ããŒãã§åŠçéåºŠã®æ©ã è¡åé€GAS
ã§ã¯ãã¯ãã§ ã©ã®ãããªã³ãŒããèšé²ãããŠããã®ã確èªããŸãããã
function delCkRows() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1:F500').activate();
spreadsheet.getRange('A1:F500').createFilter();
spreadsheet.getRange('A1').activate();
var criteria = SpreadsheetApp.newFilterCriteria()
.setHiddenValues(['FALSE'])
.build();
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(1, criteria);
spreadsheet.getRange('2:2').activate();
var currentCell = spreadsheet.getCurrentCell();
spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate();
currentCell.activateAsCurrentCell();
spreadsheet.getActiveSheet().deleteRows(spreadsheet.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
spreadsheet.getRange('A1').activate();
spreadsheet.getActiveSheet().getFilter().remove();
};ãããã«ããã¯ãèšé²ã ãšç¡é§ãå€ãã§ããã
åçŽã« A1:F500 ã®ç¯å²
.setColumnFilterCriteria(1, criteria) ã® 1
ãã®2ç¹ã 倿°ã«ããã ãã§ãååãªãã§ãããã³ãŒããå°ã綺éºã«ããŠæ±çšæ§ã®ãã圢ã«ããŠãããŸãããã
ä»å㯠ãã£ã«ã¿ã«é¢é£ããéšåã®ã³ãŒã解説ã¯å²æããŸããã§ããã£ã«ã¿éšåã®åŠçã¯ãã®ãŸãŸäœ¿ã£ãŠãOKã
åé·ãªæžãæ¹ã®éšåãä¿®æ£ããã®ãã³ãã© â
ãã£ã«ã¿ã䜿ã£ã ãã§ãã¯ãããè¡ã®äžæ¬åé€ã³ãŒã
function delCkRows2() {
const CKPOS = 1; //ãã§ãã¯ããã¯ã¹ã®äœçœ®(å)
const startRow = 2; //ã¿ã€ãã«è¡ãé€ãããŒã¿ã®éå§è¡
const sh = SpreadsheetApp.getActiveSheet();
const dataRange = sh.getDataRange();
//ãã£ã«ã¿ãèšå®
const newFilter = dataRange.createFilter();
let criteria = SpreadsheetApp.newFilterCriteria()
.setHiddenValues(['FALSE'])
.build();
newFilter.setColumnFilterCriteria(CKPOS, criteria);
//衚瀺ãããŠããè¡ãåé€
sh.deleteRows(startRow, dataRange.getNumRows());
//ãã£ã«ã¿è§£é€
newFilter.remove();
}ããä¹±æŽãªæžãæ¹ãããŠããŸãããã ãã¶ãã£ããããŸãããã

ç¡é§ãªgetãæžã£ãã®ã§åŸ®æžã§ãããå®è¡æéãããã«çããªããŸããã

现ããèæ ®ãããŠããªãã³ãŒããªã®ã§
â ã¿ã€ãã«è¡ããªã 1è¡ç®ãããã§ãã¯ããã¯ã¹ã§ãã
â ããšããšãã£ã«ã¿ãèšå®ããŠãã
â ãã§ãã¯å ã®ã¿ã€ãã«è¡ä»¥éã«ãã§ãã¯ããã¯ã¹ä»¥å€ã®ã»ã«ãæ··åšãã
ãããã«è©²åœãã衚ã ãš ãšã©ãŒã«ãªã£ããããã§ãã¯ãããè¡ä»¥å€ãåé€ãããŠããŸãå¯èœæ§ããããŸãã
ãã®ç¹ã¯æ³šæã§ãã
ã¹ãã¬ããã·ãŒãã®åºç€ç¥èãããã° GASãå€ãã
åç1ã§äœæããã³ãŒã㯠JavaScriptã䞻㫠é åã¡ãœããã®ç¥èãå¿ èŠãªãã®ã§ãã
äžæ¹ãåç2ã®ã³ãŒã㯠ã¹ãã¬ããã·ãŒãã®ãã£ã«ã¿æã®æåã®çè§£ãå¿ èŠãšãªãã³ãŒããšãªã£ãŠãããJavaScriptã«ã ã詳ãã人ã§ã¯ãã©ãçããªãè§£æ³ã§ãã
åŠçé床ãšããŠã¯ãåç2ã® ãã£ã«ã¿ã䜿ã£ãæ¹æ³ãå§åçã§ãããããããããã ãã¯ãèšé²ããã ãã§ã ã»ãŒäœ¿ããã³ãŒãã«ãªãã£ãŠã®ãããã§ããã
ãã®ããã«ãã¹ãã¬ããã·ãŒãã§ã®GAS㯠ã¹ãã¬ããã·ãŒãã®åºç€ç¥èããã㰠倧ããå€ãããŸããå®ã¯ GASã䜿ãããã·ãŒã颿°ã æ©èœã§ãã£ãæ¹ãè¯ããïŒå®ã¯åºæ¥ãïŒã£ãŠã±ãŒã¹ãå€ãã®ã§ãã
ãããäžã® è¡åé€ãæ±ã£ã GASèšäºã§ããã£ã«ã¿ã掻çšããäŸãããŸãèŠãããªãã®ã§ä»å玹ä»ããŸããïœãÂ
AIã¯ã©ãŒã¡ã³ãé£ã£ãŠãããããªããæ å ±ãé£ã£ãŠããã ïŒ
ãGASã«ãã è¡åé€ããšããã·ã³ãã«ãªãé¡ã§2åã«æž¡ã£ãŠæžããŠããŸããããé åã¡ãœããã®æŽ»çšã ã¹ãã¬ããã·ãŒãã®åºç€ç¥èãªã© å¹ åºãåŠã³ã«ç¹ãã£ãããããªãããšæããŸãã
AIã®æŽ»çšã«ãè§ŠããŸãããã3ã€ã® AI ãã£ããã®GASã³ãŒãã®åçã¯ä»åã¯ã€ãã€ãã§ãããïœã
Googleã®AIã«é¢ããŠã¯ãã¡ããã© å æ¥ïŒ8ææ«ïŒãGoogle Cloud 2023ãéå¬ãããããã§çºè¡šããã Duet AI æäŸéå§ã 話é¡ã«ãªããŸããã
GoogleWorkspaceã«ããã Microsoft 365 Copilot ã®å¯Ÿæãœãªã¥ãŒã·ã§ã³ãšãªã ãã®ã§ãã
ã©ã¡ãã æã $30 ãšããã倿®µã§ãããçŸç¶ã®GASã³ãŒããžã®åçããµãŸãããšããé«ããµãŒãã¹ã®ææç©ãã©ã®çšåºŠã®ã¯ãªãªãã£ãªã®ãæ°ã«ãªããšããã§ãã
ããæè¿ã® AIã®å°é ã§ã
Excelãã¹ãã¬ããã·ãŒãã®é¢æ°ã VBA,GAS ãªãããåŠã¶ã®ã¯ç¡é§ã
ããã°ã©ãã³ã°ãäžèŠã«ãªã ïŒèªåã§ã³ãŒãæžãå¿
èŠã¯ãªããªãïŒ
ãšããã®æéïŒãªãœãŒã¹ïŒããã£ãšAIãåŠã¶æ¹ã«åããã¹ããšããè«èª¿ããããŸãããçŸç¶ã§ã¯ãŸã ãŸã ããã§ããªãããªãšæããŸãã
ãã¡ããã±ãŒã¹ã«ãã£ãŠã¯ãAIã®åçã³ãŒãããã®ãŸãŸäœ¿ããããšããããŸãã
ããã«AIã«é¢ããŠã¯ãæ°ããªæ å ±ããèç©ãåŠç¿ããæ¥é²ææ©ã§é²åããŠããŸãã ãŸãã«ãæŽé£ã®AIïœä¿ºã ãã¬ãã«ãšããæŠå¿µãçªç Žããïœ ã§ãïœ
仿¥ã§ããªãããšããææ¥ã«ã¯ããããã¯1ã¶æåŸã1幎åŸã«ã¯åºæ¥ãããã«ãªã£ãŠãããããããŸããã
ãã® AIã®é²åé床㯠人éïŒç¹ã«ãã£ããïŒã§ã¯ çµ¶å¯Ÿã«æ¯ãç«ã¡ãŸããïœ
ãã®noteã ããã AIã®è¥ããã«ãªãã®ããªãŒã»ã»ãšæãã€ã€ãèªåãæ¥œãã¿ãªãããç¥èã®ã¢ãŠãããããšæ€èšŒããŒã¡ãŒã¡ãã£ãŠãããŸãïœ
次åã¯ãŸã颿°ãã¿ã§ãæžããããªãšã