Google Apps Scriptã§6åã®å£ïŒã¿ã€ã ã¢ãŠãïŒãçªç ŽãããGASã
Google Apps Scriptã¯äœ¿ã£ãŠããšããããŸãããéåžžã«åäœãé ãã§ããããŸãã«ããŒã«ã«PCå ã§åäœããVBAã®ããã«ããã°ã©ã ã®ã³ãŒããçµããšã倧ããªãããåŠçããããŠãããããªã±ãŒã¹ã§ã¯ãééããªãã¿ã€ã ã¢ãŠãããã§ãããããèµ·åæéã®æå€§å€ãè¶ ããŸããããšãã£ããšã©ãŒãåºãã¯ãã§ããããã¯6åãšããã¿ã€ã ã¢ãŠããèšå®ãããŠãããããéäžã§åŠçãæ¢ãŸã£ãŠããŸããã¹ã¯ãªãããç¶ç¶ã§ããªãããã§ããã¡ãœããã®ç¡é§é£ããæžãããå¹çãããããåŠçãåºæ¥ãããã«ã³ãŒãã£ã³ã°ãããŠããéçããããŸãã
ãŸãã¯é«éåããããã®ãã¯ããã¯ã身ã«çããããã§ãè¶³ããªãå Žåã«ãã®ãã¯ããã¯ã䜿ããŸãããã
ãããªããšã倧ããªåŠçã¯ïŒåïŒåã«åããŠäººéãå®è¡ããªããšãããªãã®ãïŒãšãããšãïŒååçšåºŠãªãããã§ãè¯ãã®ã§ãããå®éã®åŠçãã©ããããæããã®ããããããªãã±ãŒã¹ãããµãŒãåŽã®åé¡ã§é å»¶ããŠãã±ãŒã¹ãªã©ã§ã¯ããã確å®ãšã¯èšããŸãããä»åã¯ãã®6åã®å£ãè¶ ããçºã®ã¹ã¯ãªããã®çµã¿æ¹ãèããŠã¿ãããšæããŸããä»åã®èã¯ããªã¬ãŒã®èšçœ®ãšãåŠçããã«ãŒãã³ããªããŒãããæã«äžæãéäžããéå§ã§ããããã«çµãã§ãããããšã«ãããŸãã
ç®æ¬¡
䜿çšããã¯ã©ã¹ãšã¡ãœããã»å¶é
- Triggerã¯ã©ã¹ã®åçš®ã¡ãœãã
- Properties Serviceã®åçš®ã¡ãœãã
- ä»å䜿çšããã¹ãã¬ããã·ãŒã
- ãµã³ãã«ã§å©çšãããµã³ãã«ããŒã¿x10
ãŸããGoogle Apps Scriptã®å¶éãšããŠG Suite Basicãã©ã³ã®å Žåã¯ä»¥äžã®ããšãèæ ®ããå¿ èŠããããŸãã
- Triggerã«ãŠå®è¡ã§ããããŒã¿ã«æéã¯6æé/1æ¥ã§ããããªãŒã¢ã«ãŠã³ãã ãš90å/1æ¥ãšãªã£ãŠããŸãã
- UrlFetchAppãå®è¡åºæ¥ãåæ°ã¯ã10äžå/ïŒæ¥ã§ãã
- ã¹ãã¬ããã·ãŒããžã®æžã蟌ã¿å¯èœã»ã«æ°ã¯ã500äžã»ã«ã§ãã
- POSTã«ãŠã¢ããããŒãå¯èœãªãã¡ã€ã«ãµã€ãºã¯æå€§10MBã§ãã
- ã¹ã¯ãªããããããã£ãžã®å€ã®æ ŒçŽã¯ãJSON圢åŒã«å€æããŠããã°ãå²ãšå€§ããªããŒã¿ãæ ŒçŽå¯èœã§ãã
â»2022幎9æããããšã¯å¥ã®ææ³ãäœæããŸããã以äžã®ãšã³ããªãŒã埡芧ãã ããã
Google Apps Scriptã§6åã®å£ïŒã¿ã€ã ã¢ãŠãïŒãçªç Žãã - çªå€ç·šãGASã
ãµã³ãã«ã¹ãã¬ããã·ãŒãã®æ³šæç¹
ä»åã®ãµã³ãã«ã¹ãã¬ããã·ãŒãã¯ä»¥äžã®ãããªä»æ§ã«ãªã£ãŠããŸããã¡ãã¥ãŒãããã¡ã€ã«ãªã¹ãã®äœæãããŒã¿ã®ååŸãããŒã¿ã®ã¯ãªã¢ãå¯èœã«ãªã£ãŠããŸãã
- æå®ã®ãã©ã«ãIDå ã«ãã10åã®ãµã³ãã«ããŒã¿ã®ãã¡ã€ã«ãªã¹ããæã£ãŠããŸãã
- ãã¡ã€ã«ãªã¹ãã«åŸã£ãŠããŒã¿ã®ååŸãè¡ãã®ãä»åã®ã¡ã€ã³ãšãªãã¹ã¯ãªããã§ãã
- éåžžã¯5åãè¶ ãããããªã¬ãŒãã»ããããŠã1ååŸã«éäžããéå§ãããããã§ãããV8ã«ãŠé床åäžãããããä»åã®ãã¹ãã«éãã2åã§åã£ãŠããŸããéåžžã¯4åã§çµãããšæããŸãã
- äœããåŠçéåºŠãæ©ããš2åã§ããã¡ããšå®äºããŠããŸãããšããããŸãã
- ãµã³ãã«ããŒã¿ã¯ïŒåããã3åx50000è¡ = 15äžã»ã«ã®ããŒã¿ã®å¡ã10åé£ç¶ååŸããŠãèªèº«ã®dataã·ãŒããžè¿œèšåã§ã³ããŒããŸãã
- çµäºæã«ç·ã¹ã¯ãªããå®è¡æéãè¿ããŸãã
- ãµã³ãã«ããŒã¿åŽã«ããããŒããŒã¿çæçšã®ã¹ã¯ãªããããããŠãããŸãããä»åã¯å²æããŸãã
- 远èšåã§ãããããïŒåç®ãã¹ãããããŸãã«ãããŒã¿ã®ã¯ãªã¢ãããŠãããŠãã ãããããã10ãã¡ã€ã«ã§150äžã»ã«åã®ããŒã¿ãååŸããŸãã
èãæ¹
æ§ã ãªã±ãŒã¹ãããã®ã§äžæŠã«ã³ã¬ãšããã³ãŒããèšè¿°ã§ãããããããªãã®ã§ãããã©ãã«ã€ããŠãèšããã®ã¯ä»¥äžã®æ°ç¹ã§ããä»åã¯åçŽã«å¥ã®ã¹ãã¬ããã·ãŒãã«ããããŒã¿ãååããŠãèªåã®ïŒã€ã®ã·ãŒãã«éçŽããŠãŸãšããŠè²Œãä»ãããšããã¹ã¯ãªããã§èããŠèŠãããšæããŸãã
- åŠçãè¡ã察象ã¯ãã¡ããšããŒãã«åããŠããäºïŒäŸãã°ãããŒã¿ã®å蟌å äžèЧã®ãããªåœ¢ã§ã·ãŒãã«ããŒãã«åœ¢åŒã§çšæããŠããäºïŒ
- åŠç察象ããŒãã«ã«ã¯åºæã®IDãæ¯ã£ãŠããããšãããããªããšãïŒåç®ä»¥éã§ã©ãããåéãããããã倿ãã€ããªãçºãä»åã¯IDã®ä»£ããã«äœã¬ã³ãŒãç®ãªã®ãã6.ã®ã¹ã¯ãªããããããã£ã«æ ŒçŽããæ¹æ³ã§ä»£çšããŠããŸããå人çã«ã¯ãã¡ãããªã¹ã¹ã¡ã
- éå§æéãšéå§ããŠããã®çµéæéã®éãåã£ãŠã皌åæéãååŸããã«ãŒãã³ãçšæããŠããã
- 皌åæéã5åã«è¿«ãå Žåã«ã¯ãåŠçãäžæããŠã6.ã®ã¹ã¯ãªããããããã£ã«ããããå€ãæ ŒçŽããŠãèªåèªèº«ã®ã«ãŒãã³ãããªã¬ãŒã«ç»é²ããã³ãŒããå®è¡ããããã«ãããïŒååŸãããã§ååã§ãã
- å®éã®åäœåœããã®æéãããããªããæåã®å®è¡æã«ã¿ã¹ã¯ãåå²ãã¡ãã£ãŠããããªãã¹ã¯ãªããããªã¬ãŒã«ã¿ã¹ã¯ãç»é²ãã¡ãã£ãŠããããšã¯æããŸãããã©ãã
- å¿ é ã®ã¹ã¯ãªããããããã£ãšããŠãã©ããŸã§åŠçãå®äºæžã¿ãªã®ãæ ŒçŽããã¹ã¯ãªããããããã£ãäœã£ãŠãããããã«ã¯2.ã®åºæã®IDãæ ŒçŽããŠãããèªåã®å Žåã¯ãããã¯ã次ã«éå§ããIDãå ¥ããããã«ããŠããã
- å šãŠã®åŠçãå®äºãããã©ããã確èªããããã®å€æ°ãäœã£ãŠããããã®å€ãtrueã®å Žåã®æã ããèšçœ®ããããªã¬ãŒãåé€ããã«ãŒãã³ãåãããªããŠãå°ããªãã§ãããã©ãã
- æåŸã«å šãŠã®åŠçãå®äºããããå šããªã¬ãŒã®åé€ãšã¹ã¯ãªããããããã£ãåæåããã³ãŒããå®è¡ããŠå®äºãšãªããŸãã
å³ïŒç°¡åãªãããŒãã£ãŒã
ãœãŒã¹ã³ãŒã
ã¹ã¯ã©ããã§æžãå Žå
ä»åäœæããã³ãŒãã¯ããflielistã·ãŒãã«ç»é²æžã¿ã®100ãè¶ ããã¹ãã¬ããã·ãŒãã®ãdatabaseã·ãŒããååŸããŠãèªåèªèº«ã®testã·ãŒãã«æžã蟌ãããšããåŠçããã®ææ³ã§å®è¡ããŠã¿ãŸããããããå®äºãŸã§ïŒåã»ã©ã¹ã¯ãªããã¯å®è¡ããªããšãããŸããã§ãããä»åã®6åã®å£ãè¶ ããææ³ã«ãã£ãŠæŽåããŸãããããã¡ããš100ã·ãŒãå š110,000ã¬ã³ãŒããååŸããç¡äºã«æžã蟌ã¿ãå®äºããŸãããããªã¬ãŒã¯ïŒååŸã«åèµ·åããããã«ä»èŸŒãã§ãããŸãã
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
//ãã¡ã€ã«ãªã¹ãããããŒã¿ãååŸãã function testget() { //æ¢åã®ããªã¬ãŒãåé€ããŠãã deleteTrigger(); //ãã¡ã€ã«ãªã¹ãã·ãŒããååŸ var mvsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = mvsheet.getSheetByName("filelist"); var filelist = sheet.getRange("A2:C").getValues(); var ui = SpreadsheetApp.getUi(); //æžã蟌ã¿å
ã·ãŒãã®æå® var ss = mvsheet.getSheetByName("data"); //é
åã®çšæ var dataman = []; //ããªã¬ãŒçšã®ãã©ã°å€æ°ãšå€ã®ååŸ var Properties = PropertiesService.getScriptProperties(); var taskman = parseInt(Properties.getProperty("task")); var endflag = true; //taskmanã®å€ãå€å®(å€ããªãæã¯0ãšããïŒ if(taskman >= 0){ //ç¹ã«ãªã«ãããªã }else{ taskman = 0; Properties.setProperty("task", 0); } //æå»æ ŒçŽçšã®å€æ° var starttime = new Date(); //taskmanã0ã®æã ãç·éå§æéãèšé²ãã if(taskman == 0){ Properties.setProperty("scriptstart", starttime); } //taskmanã®çªå·ããã¹ã¿ãŒããã for(var i = taskman;i<filelist.length;i++){ //çŸåšæå»ãååŸãã var nowtime = new Date(); //æå»ã®æ¯èŒãããŠãªãŒããŒãããã ã£ãããããªã¬ãŒè¿œå ã§åŠçã忢 var nowdiff = parseInt((nowtime.getTime()-starttime.getTime())/(1000*60)); //6åãè¶
ããŠãããäžæåŠçïŒä»åã¯ãã¹ãã§2åã§äžæãæ¬æ¥ã¯5åãæå®ïŒ if(nowdiff >= 2){ //é
åããŒã¿ãã·ãŒãã®æçµè¡ä»¥äžã«æžãåºã var sheetlastRow = ss.getLastRow() + 1; var lastColumn = dataman[1].length;ãã//ã«ã©ã ã®æ°ãååŸãã var lastRow = dataman.length; ãããã//è¡ã®æ°ãååŸãã ss.getRange(sheetlastRow,1,lastRow,lastColumn).setValues(dataman); //次ã®åŠçã®ããªã¬ãŒãèšçœ®,ããããã£ã«taskçªå·ãç»é²ãããã°ã©ã ã忢 Properties.setProperty("task",taskman); setTrigger(); endflag = false; return; } //ãã¡ã€ã«IDãã²ãšã€åãåºãïŒBåïŒ var spreadman = filelist[i][1]; //databaseã·ãŒãã®å€ãé
åã«ã¶ã£ãã var kinoko = SpreadsheetApp.openById(spreadman).getSheetByName("data").getRange("A2:C").getValues(); Array.prototype.push.apply(dataman,kinoko); //次ã®è¡çªå·ãæ ŒçŽããŠãã taskman = Number(taskman) + 1; } //ã¿ã¹ã¯ãå
šéšçµäºããæã®åŠç if(endflag == true){ //é
åããŒã¿ãã·ãŒãã®æçµè¡ä»¥äžã«æžãåºã var sheetlastRow = ss.getLastRow() + 1; var lastColumn = dataman[1].length;ãã//ã«ã©ã ã®æ°ãååŸãã var lastRow = dataman.length; ãããã//è¡ã®æ°ãååŸãã ss.getRange(sheetlastRow,1,lastRow,lastColumn).setValues(dataman); //ãããžã§ã¯ãããªã¬ãŒãå
šåé€ deleteTrigger(); //ããªã¬ãŒçšå€æ°ã®åæå Properties.setProperty("task",0); //ã¹ã¯ãªããã®ç·çšŒåæéãç®åº var nowtime = new Date(); Logger.log(nowtime); var scripttime = new Date(Properties.getProperty("scriptstart")); var difftime = parseInt((nowtime.getTime()-scripttime.getTime())/(1000*60)); //çµäºåŠç ui.alert("åŠçãå®äºããŸãããã¹ã¯ãªããã®ç·çšŒåæéã¯" + difftime + "åã§ããã"); } } //ããªã¬ãŒãå
šåé€ãã颿° function deleteTrigger() { var allTriggers = ScriptApp.getProjectTriggers(); for(var i=0; i < allTriggers.length; i++) { ScriptApp.deleteTrigger(allTriggers[i]); } } //ããªã¬ãŒãèšçœ®ãã颿°ïŒtestget颿°ãå®è¡äºå®ãšããŠç»é²ïŒ function setTrigger(){ var triggerman = ScriptApp.newTrigger("testget") .timeBased() .everyMinutes(1) .create(); } //ããŒã¿ãå
šã¯ãªã¢ãã function cleardata(){ var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("data").getRange("A2:C"); var ui = SpreadsheetApp.getUi(); ss.clearContent(); SpreadsheetApp.flush(); ui.alert("ããŒã¿æ¶å»ããŸããã") } |
ç°¡åã«èšè¿°åºæ¥ãã©ã€ãã©ãªç»å Ž
6åãè¶ ããçºã®ãã¯ããã¯ã§ããããªããªããã¯ãã«ã«ãªä»çµã¿ã§ãããããããŒãã«ãé«ãã®ã¯äºå®ã§ãããããå°ãç°¡åã«æžããããã«ããŠãããã©ã€ãã©ãªãç»å ŽããŸãããã¹ã¯ãªããIDã¯ã1aFT6J1RlHtYIj1_O5jqz0iHInI3kOyIXZ1Xr1WeVXYCZgJ8X5on6MO9-ãã远å ããã³ãŒãæ¬äœã¯ããããé²èЧããäºãå¯èœã§ãã
ãµã€ãã§ã¯è©³ããã³ãŒãã®èšè¿°æ¹æ³ãé瀺ãããŠããŸãã®ã§ãã©ãããŠã6åãè¶ ããã³ãŒããæžãå¿ èŠããã人ã¯äžèŠã®äŸ¡å€ã¯ããã®ã§ã¯ãªãããšæããŸãã
ãã€ã³ã
- ã¹ã¯ãªããããªã¬ãŒã䜿çšããŠãã®ã§ãSpreadsheetAppãªã©ã§ã¯ãgetActiveSpreadsheetãgetUiãªã©ã¯äœ¿ããŸããã®ã§ã泚æãã ãããã¹ã¯ãªãããæ¢ãŸã£ãŠããŸããŸããopenByIdãªã©ã§ä»£çšãããããŸãããã
- ã¹ã¯ãªããããªã¬ãŒã§ãªãããããªã»ã«ã³ãåŸã«å®è¡ïŒafter(60*1000)ãªã©ïŒã§ããªã¬ãŒãèšçœ®ããŠããªãããçºåããªãã£ãã®ã§ã1忝å®è¡ãšèµ·åçŽåŸã«ããªã¬ãŒå šåé€ãçµã¿åãããŠãïŒååŸã«åèµ·åäºçŽãããŠããŸãã
- ã©ãããŠãå®äºå ±åãæ¬²ããå Žåã«ã¯ãMailAppãªã©ãå©çšããŠãå®äºããæšãã¡ãŒã«ããããšããLogger.logã®äžèº«ãã©ããã«æžãåºããªã©ã®ææ³ã广çã§ããã©ããŸã§å®äºããäŸãã°ã©ãã§ãšã©ãŒãçºçããã®ããããããŸãã
- é åããŒã¿ã¯äžçºã§æžã蟌ãããã«ããŠããŸãã6åãè¶ ãããããããšãã£ãŠãã¡ãœããã®äœ¿çšã¯éããªãå°ãªãããããã«ããªããšå¹æãèãã§ãããã
- ã¡ã€ã³ãšãªãåŠçã«ãŒãã³ã¯ãéäžããéå§ããããšãåæã«äœããŸãããªã®ã§éäžããå§ããå Žåã«ã©ããªå€ãå¿ èŠãªã®ãïŒãèãããšäœãããããªããŸããä»åã®ãœãŒã¹ã§èšãã°ãforã«ãŒãä»è¿ãèã«ãªããŸãã
- ãµã³ãã«ã³ãŒãã§å·šå€§ãªããŒã¿ãååŸããŠè²Œãä»ããå ŽåãååŸããã®ã¯éåžžã«é«éã«ååŸã§ããã®ã§ããã貌ãä»ããç©åãé ãã®ã§ãããã§ãã¿ã€ã ãªãŒããŒããŠããŸãã±ãŒã¹ããããŸãããã®å ŽåããŸãšããŠè²Œãä»ããã®ã§ã¯ãªãããããšã·ãŒãåäœã§è²Œãä»ããã³ãŒãã«ããã¥ãŒã³ãããšãäžæã6åã®å£ãè¶ ããããããã«ãªããŸãã30,000ã¬ã³ãŒãã»10ã«ã©ã ã貌ãä»ããã±ãŒã¹ã§ã¯ãã®ãŸãŸã§ã¯å€±æããŸãã
é¢é£ãªã³ã¯
- ïŒå以äžãããåŠçã®å®è£ ã«ã€ããŠïŒã¿ã€ã ã¢ãŠããšã©ãŒå¯ŸçïŒ
- Google Apps Scriptã«ãããããåŠçã®éçºããœãŒã¹ã³ãŒãããã
- ãã䜿ãTime Triggerã®ãã³ãã¬
- GASã®ã©ã€ãã©ãªã䜿ã£ãŠæ¥œãããâ¡ å€éšã®JSã©ã€ãã©ãªã䜿ã£ãŠã¿ã(:3ã[]
- Time-consuming tasks and Google Apps Script Add-ons
- Parallel processing in Apps Script
- 2ã€ã®Dateéã®å·®åãæ±ãã
- ããã©ãŒãã³ã¹ã®è¯ãGASã®æžãæ¹ Best Practice
- Using ScriptApp to process batches in Google Apps Script that last more that 5 minutes
- ã€ãã§ããããJavaScriptè¬åº§ â èªçæ¥ããçµéæ¥ãèšç®ãã
- ãJavaScriptãæ¥ä»/æå»ããŒã¿ãæäœãã(Dateãªããžã§ã¯ã)
- [Google Apps Script] ã¹ã¯ãªããã®äžŠåå®è¡ã«ãã£ãŠå®è¡æéå¶éãã¯ãªã¢ããæ¹æ³