ãããªæ©ã¿ããã¾ãããï¼
ãå®è¡ãã¿ã³ãæ¼ããã赤åã®ã¨ã©ã¼ãåºãâ¦è±èªã§èªããªãã
ãæ¨æ¥ã¯åããã®ã«ä»æ¥ã¯åããªãããªãï¼ã
ãundefined ã£ã¦ãªã«ï¼ã©ããç´ãã°ããï¼ã
GASã触ãå§ãã¦æåã®1é±éãç§ã¯ãã®ã¨ã©ã¼å°çã§ä½åº¦ãå¿ãæãã¾ãããå ¬å¼ããã¥ã¡ã³ãã¯ä¸å¯§ã§ãããåå¿è åãã§ã¯ãªããããããç¨èªãããããªããåé¡ã«ã¶ã¤ããã¾ãã
ãã®è¨äºã§ã¯ãç§ãå®éã«è¸ã¿æãã**ã¨ã©ã¼10é¸**ã¨ããã®è§£æ±ºã³ã¼ããã¾ã¨ãã¾ãããã¨ã©ã¼ã¡ãã»ã¼ã¸ãããã¯ãã¼ã¯ä»£ããã«ä½¿ãããããæ¤ç´¢ããããå½¢ã§ä¸¦ã¹ã¦ãã¾ãã
ã¨ã©ã¼è§£æ±ºã®åºæ¬ããã¼
[ã¨ã©ã¼çºç] â [ã¡ãã»ã¼ã¸å
¨æãã³ãã¼] â [該å½è¡ã確èª] â [åã¨å¤ããã°åºå] â [ä¿®æ£] â [åå®è¡]
ãããªãã³ã¼ããç´ããã¨ãããã¾ãç¶æ
ãè¦ããåããã®ãè¿éã§ããconsole.log ã§å¤æ°ã®ä¸èº«ãåºãã ãã§8å²ã¯è§£æ±ºãã¾ãã
é »åºã¨ã©ã¼10é¸ã¨è§£æ±ºã³ã¼ã
1. TypeError: Cannot read properties of undefined
ãã£ã¨ãééããã¨ã©ã¼ãåå¨ããªãããããã£ãèªããã¨ãã¦ãã¾ãã
function getUser() {
const data = { name: "太é" };
console.log(data.profile.age); // profileãç¡ãã®ã§è½ã¡ã
}
解決: ãªãã·ã§ãã«ãã§ã¼ã³ã§åé¿ã
console.log(data.profile?.age ?? "æªè¨å®");
2. ReferenceError: XXX is not defined
夿°åã颿°åã®ã¿ã¤ããã¹ãã¾ã㯠const 宣è¨å¿ãã§ãã
解決: ã¹ãã«ãã§ãã¯ã¨å®£è¨ã®æç¡ã確èªãGASã¨ãã£ã¿ã®èªåè£å®ãæ´»ç¨ããã¨æ¸ãã¾ãã
3. Exception: Service Spreadsheets failed
ã¹ãã¬ããã·ã¼ãå´ã®åæç·¨éããã·ã¼ãåã®å¤æ´ã§èµ·ãã¾ãã
const sheet = SpreadsheetApp.getActive().getSheetByName("売ä¸");
if (!sheet) throw new Error("ã·ã¼ããè¦ã¤ããã¾ãã");
解決: ã·ã¼ãåå¾ç´å¾ã«nullãã§ãã¯ãå ¥ããã
4. Exception: Authorization is required
権éãæªæ¿èªã§ããååå®è¡ã§å¿ ãåºã¾ãã
解決: æåå®è¡ã§ä¸åº¦æ¿èªãéãã¾ããèªåå®è¡ã ãã§ã¯æ¿èªãã¤ã¢ãã°ãåºãªãã®ã§æ³¨æã
5. Exception: Service invoked too many times
1æ¥ãããã®APIå¼ã³åºãä¸éè¶ éãã¡ã¼ã«éä¿¡ãªã100é/æ¥ãªã©ã
解決: Utilities.sleep(1000) ã§ééã空ããããå¦çãåå²ã
6. Exception: Script took too long
å®è¡æéã®ä¸éï¼ç¡ææ 6åï¼ãè¶ ããå ´åã«çºçãã¾ãã
function heavyTask() {
const data = fetchHugeData();
data.forEach(row => processRow(row)); // 10ä¸ä»¶ããã¨æ»ã¬
}
解決: ãããåå²ï¼ããªã¬ã¼åèµ·åã
function chunkedRun() {
const props = PropertiesService.getScriptProperties();
const startRow = Number(props.getProperty('startRow') || '0');
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();
const batch = data.slice(startRow, startRow + 1000);
batch.forEach(row => processRow(row));
props.setProperty('startRow', String(startRow + 1000));
}
7. SyntaxError: Unexpected token
ã«ã³ãå¿ããæ¬å¼§ã®éãå¿ããªã©æ§æãã¹ã
解決: ã¨ãã£ã¿ã®èµ¤æ³¢ç·ããã©ã£ã¦è©²å½è¡ãä¿®æ£ãç§ã¯åæã; ã®æãã§2æé溶ããã¾ããã
8. Exception: Range not found
getRange("A1:Z") ã®ãããªç¡å¹ãªç¯å²æå®ã§çºçã
解決: æç¤ºçã«æ°å¤æå®ã
sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn());
9. TypeError: XXX.map is not a function
é åã ã¨æã£ã夿°ãé åãããªãå ¸åãã¿ã¼ã³ã
解決: é ååãæãã
const arr = Array.isArray(result) ? result : [result];
arr.map(item => item.name);
10. Exception: Rate Limit Exceeded
å¤é¨APIã³ã¼ã«ï¼UrlFetchAppãªã©ï¼ã§ã®é£æã¨ã©ã¼ã
解決: ææ°ããã¯ãªãï¼å¤±ææã«å¾ æ©æéãåã ã«ããï¼ã§å試è¡ã
function fetchWithRetry(url, retries = 3) {
for (let i = 0; i < retries; i++) {
try { return UrlFetchApp.fetch(url); }
catch (e) { Utilities.sleep(1000 * Math.pow(2, i)); }
}
}
GASã¨ã©ã¼å¯¾å¦ã®ã¡ãªãã
ã¨ã©ã¼ã¨ä»²è¯ããªãã¨ã次ã®ãããªå®æãå¾ããã¾ãã
- åå©ç¨å¯è½ãªã³ã¼ããæå ã«æºã¾ãï¼æ¬¡ã®æ¡ä»¶ã§å³ä½¿ããï¼
- ãã°ã®åå æ¨å®ãéããªãï¼åæãã¤ãï¼
- ä»äººã®ã³ã¼ãããããã°ã§ããããã«ãªãï¼å°å³ã«è©ä¾¡ãããï¼
ç§ã®å ´åãã¨ã©ã¼å¯¾å¦ãã¼ããèªåç¨Notionã«è²¯ãã¦ããããã3ãæå¾ã«ã¯èª°ãã«æããããã¬ãã«ã«ãªã£ã¦ãã¾ããã
ãããã失æãã¿ã¼ã³
失æ1: ã¨ã©ã¼ã¡ãã»ã¼ã¸ãèªã¾ãã«ã°ã°ã
ãã¨ã©ã¼ãåºããã§æ¤ç´¢ãããããã¡ãã»ã¼ã¸å ¨æãã³ããããæ¹ã100åéã解決ãã¾ãã
失æ2: ä¿®æ£å¾ã«ãã£ãã·ã¥ã§å¤ãã³ã¼ããåã
GASã§ã¯ãã¾ã«ãä¿åããã¤ããã®ã³ã¼ããåæ ãããªããã¨ãããã¾ããCtrl+S ã§æç¤ºä¿åãã¦ããå®è¡ãã¦ãã ããã
失æ3: ãã°ãä»è¾¼ã¾ãã«åã§ç´ã
console.log ã5ãæã«ä»è¾¼ãã°ãåå ã¯å¿
ãè¦ã¤ããã¾ããæè¦ã«é ¼ãã¨ç¡éã«æéãæº¶ãã¾ãã
çºå±ä¾ï¼èªä½ã¨ã©ã¼ãã³ãã©
é »çºããå¦çã¯try-catchã§å²ã¿ã失ææã«ã¡ã¼ã«éç¥ããã¨éç¨ã楽ã«ãªãã¾ãã
function safeRun(fn) {
try { fn(); }
catch (e) {
GmailApp.sendEmail("me@example.com", "GASã¨ã©ã¼", e.message);
}
}
ç¬å¦ã§éçãæããã
ã¨ã©ã¼å¯¾å¦ã¯ãã¿ã¼ã³èªèã®ä¸çã§ããç¬å¦ã§ç²ãã®ãå°ãã§ãããä½ç³»çãªå¦ç¿ã§åºç¤ãåºã¾ãã¨ãæªç¥ã®ã¨ã©ã¼ã«ãåãåãããã«ãªãã¾ãã
ãªã³ã©ã¤ã³ã®ããã°ã©ãã³ã°ã¹ã¯ã¼ã«ã§ã¯ãç¾å½¹ã¨ã³ã¸ãã¢ã«ã¨ã©ã¼ãç´æ¥ç¸è«ã§ãããµãã¼ããä»ãã¦ãããã¨ãå¤ããç¡æã«ã¦ã³ã»ãªã³ã°ã§èªåã®å¦ç¿æ¦ç¥ãè¦ç´ãã ãã§ãå¾ããã®ãããã¾ãã
ã¾ã¨ã
- ã¨ã©ã¼ã¡ãã»ã¼ã¸ã¯å ¨æèªã
console.logã§ã¾ãç¶æ ãè¦ããå- 10é¸ã®ãã¡6ã¤ã¯åãã§ãã¯ã§é²ãã
- èªä½ã¨ã©ã¼ãã³ãã©ã§éç¨å質ãä¸ãã
ã¨ã©ã¼ã¯æµã§ã¯ãªããã³ã¼ããæãã¦ããããã³ãã§ããæ¬¡ã®ã¨ã©ã¼ã«åºä¼ã£ããããã²ãã®è¨äºã«æ»ã£ã¦ãã¦ãã ããã
é¢é£è¨äº: