Automaã«ããèªåå - CSVã䜿ã£ã倧éããŒã¿ç»é²
â»ãã®èšäºã¯èªåãæå±ããçµç¹ã§æžãã以äžã®èšäºã®ã³ããŒã§ããæçš¿ããèšäºã¯å人ã®èäœç©ãšããŠèªããã°ã«ã³ããŒããŠè¯ãã«ãŒã«ãšããŠããŸãã
å èšäº: https://tech-blog.mitsucari.com/entry/2025/12/10/121816
ããã«ã¡ã¯ãããã«ãªCTOã®å¡æ¬ããšãã€ãã³ãŒ(@tsukaby0) ã§ãã
ã¿ãªããã¯WebããŒãžãæäœããŠããŠããããªããšãæã£ãããšã¯ãããŸãããïŒ
ãç¹°ãè¿ããé¢åã ã倧éã®ããŒã¿ãç»é²ããã®ã倧å€ã ãã
Webã«éããŸããããããèšãåé¡ã¯äžè¬çã«ãããããããããã解決ããæè¡ã»é åãšããŠRPA(Robotic Process Automation)ãšãããã®ããããŸãã
ä»åã¯ãã®RPAããŒã«ã§ããAutomaã䜿ã£ãŠã倧éã®æäœãèªååãããã¯ããã¯ãå ±æããããšæããŸãã
Automaãšã¯
Automaã¯Chromeã®æ¡åŒµã§ãã
OSSã§ããããŸãã
ãŸããäŒç€Ÿã§ãããã以äžãå ¬åŒãµã€ãã§ãã
TIKFLOW PTE. LTD. ãšããã·ã³ã¬ããŒã«ã®äŒç€Ÿãéå¶ããŠããããã§ãããã©ãŠã¶çã§ãªãPCçãããããã§ããããã¡ãã¯äœ¿ã£ãŠããªãã®ã§åãããŸãããææãã©ã³ãããããã§ããã
ãªãããããæ å ±ã調ã¹ãã®ããšãããšãChromeæ¡åŒµã¯åœåã¯åé¡ãªãã£ããåŸã§æš©å©ã®å£²åŽçãçµãŠãã«ãŠã§ã¢åããã±ãŒã¹ãå€çºããŠããããã§ãããã®ããåºæ¬çã«ã¯ä¿¡çšã§ãã倧æäŒæ¥ã®æ¡åŒµã ãå©çšããå人ãåºããŠãããããªæ¡åŒµã¯å©çšããªãæ¹ãå®å šã§ããä»åã®ã±ãŒã¹ã¯äœãšãèšããªããããªã¹ã¯ãé«ãæ¹ã ãšæããŸããå©çšããå Žåã¯èŠæ±æš©éã倧ããå Žåã¯æ§ãããå©çšåŸã«ã¢ã³ã€ã³ã¹ããŒã«ãããªã©æ³šæãããŠãããæ¹ãè¯ãããã§ãã
ãã®åé¡ã«ã€ããŠæ°ã«ãªãæ¹ã¯ä»¥äžã®ãããªèšäºãã芧äžãããåºæ¬çã«æ¡åŒµã®ã€ã³ã¹ããŒã«ã«ã¯æ éã«ãªããŸãããã

Automaãã€ã³ã¹ããŒã«ãã
Automaã®Chrome extensionã¯ãã©ãŠã¶ã®æäœãèªååãããã®ã§ããITãšã³ãžãã¢ãšããŠã¯ãããã£ãŠå¥ã«PlaywrightïŒãããã¯é¡äŒŒè£œåïŒã§ãããã®ã§ã¯ããšæããŸããç§ããã®ç¹ã¯æ€èšããŸããã
Playwrightã§ãã§ããŸãããå Žåã«ãã£ãŠã¯ãã¡ãã®æ¹ãèªç±åºŠãé«ããŠæ©ãäœããæ°ã¯ããŸããããããéãšã³ãžãã¢ãå®è¡ãããä¿å®ããããšãæ€èšãããšãã¹ãã§ã¯ãªããããããŸãããAutomaã¯GUIã§ã¯ãŒã¯ãããŒãäœæã§ãããŸãã¯ãŒã¯ãããŒããšã¯ã¹ããŒãã§ããã®ã§éãšã³ãžãã¢ã®ããšãèæ ®ãããšè¯ãéžæè¢ãšèšãããã§ãã
ã€ã³ã¹ããŒã«ã¯æ¡åŒµã®ãµã€ãããå ¥ããã ãã§ãã
Automaãå®è¡ããŠã¿ã
Chromeæ¡åŒµã®éžæéšåããAutomaãéžæãäºåã«çšæãããŠãããµã³ãã«ãå®è¡ããŠã¿ãŸãã

èªåã§ã¿ããéããŠâAutoma Extensionâã§æ€çŽ¢ãããŸããã

Automaã§CSVã䜿ã£ã倧éããŒã¿ç»é²ã宿œãã
ãããããæ¬é¡ã§ããæå€ãšèŠåŽããã®ã§ããã®ç¥èŠã誰ãã®çºã«ãªãã°å¬ããã§ãã
ä»åã¯èªåã§Google formãçšæããŠããã«CSVããŒã¿ã䜿ã£ãŠè€æ°åç»é²åŠçãããããªèªååãäŸã«ããŠã¿ãŸãã
äºåæºå
ã¯ãŒã¯ãããŒãäœãåã«äºåã«Google formãšCSVãã¡ã€ã«ãäœæããŠãããŸãã
Google formã¯é©åœã« åå 幎霢 奜ããªé£ã¹ç© ã®çæåœ¢åŒã®ïŒè³ªåã ãã«ããŠãããŸãã
CSVãã¡ã€ã«ã¯ä»¥äžã®ãããªå 容ãšããŸãã
name,age,favorite_food
éŽæš,20,寿åž
äœè€,30,ãã¡ã
â»æåŸã«ç©ºè¡ãå ¥ããªãããã«ããŠãã ãããäœèšãª(空)ããŒã¿ãèªã¿èŸŒãŸããŠããŸããŸãã
ã¯ãŒã¯ãããŒã®äœææã«CSVãèªã¿èŸŒãåŠçã远å ããŸãããããã¯è¿œå ã®æš©éãå¿ èŠã§ãã詳现ã¯ãã¡ãã®ãã«ãã«æžããŠãããŸãã
Automa Chromeæ¡åŒµã®èšå®ãã ãã¡ã€ã«ã® URL ãžã®ã¢ã¯ã»ã¹ãèš±å¯ãã ãONã«ããŸããããã¯åé ã®éãåŒ·ãæš©éãäžããããšã«ãªããããçžå¿ã®ãªã¹ã¯ããããŸãããããããã©ãŠã¶æ¡åŒµãCSVãèªã¿èŸŒãããã«ã¯ãããããããããŸããã
ONã«ããåŸã§èšå®ãåæ ãããæ¡åŒµãåèµ·åããããã«ãã©ãŠã¶ãåèµ·åããæ¹ãè¯ãããã§ãã
ã¯ãŒã¯ãããŒã®äœæ
ãŸãAutomaã®Dashboardãéã㊠New workflow ãæŒããŸãã
(Record workflow ã䜿ãæããããŸãããã®å Žåãèªåã®ãã©ãŠã¶æäœãã¯ãŒã¯ãããŒåããŠãããã®ã§ããã¡ããããŸãçµã¿åããããããŠäœã£ãŠãããšè¯ãã§ãã)
Triggerã®åŸã«è²ã ãªæäœãç¹ããŠããããã§ãããå®æåœ¢ãšããŠã¯ä»¥äžã®ããã«ãªããŸãã

ããã«ã€ããŠïŒã€ãã€è§£èª¬ããŸããåºæ¬çã«ããããã®èŠçŽ ã¯ããã«ã¯ãªãã¯ãããèšå®ãã¿ã³ãæŒããšè©³çްãªèšå®ãã§ããã®ã§ãïŒã€ãã€èšå®ããŠãããŸãã
- Trigger: ããããå§ãŸãããšããã ãã§ãã
- Insert data: Insertãšããåç§°ã§æ··ä¹±ããŸããããããã¯ããŒã¿ã®ããŒãã ãšæã£ãŠãã ãããããã®è§£éã«ããªãæéãèŠããŸããããã«ãã¯ãã¡ãã§ããèšå®ç»é¢ã§ãã¡ã€ã«ã®Importãã¿ã³ãæŒããŠãã絶察ãã¹ãäžããŸãããã¬ãã¥ãŒãã¿ã³ã§ããŒã¿èªã¿èŸŒã¿ã®ç¢ºèªãã§ããŸãã確èªãã§ãããOKã§ãã

- ãã®èŸºãã¯ãŸã ããããã£ãŠããªãã®ã§ãããTableãšããŠèªã¿èŸŒãããã¯VariableãšããŠèªã¿èŸŒãã æ¹ãè¯ãã§ãããã®å Žåãé©åœãªåç§°ãã€ããŸããä»åã®å Žåã¯
answer_dataãšããŸããããã®å€æ°åã¯åŸã§äœ¿ããŸãã
- New Tab: æå®ã®URLã®æ°ããã¿ããéããã®ã§ããããã«ã¯ãªãã¯ããŠURLãèšå®ããŠãããŸããä»åã®å Žåã¯èªåã§äºåã«çšæããGoogle formã®åçURLãå ¥ããŸãã
- Delay: æå®ããæéã ãã¯ãŒã¯ãããŒãæ¢ããŸããããã¯ããŒãžããŒããªã©è²ã ãªåé¡ãåé¿ããããã«äœ¿ããŸãããŸããé©åºŠã«èšå®ããŠããããšã§å¯Ÿè±¡ã®ãµãŒããŒã«è² è·ããããã«æžã¿ãŸãããã©ããŸã§å ¥åãã§ããããªã©ãç®èŠã§ç¢ºèªã§ããã®ã§é©å®å ¥ãããšè¯ãã§ãã
- Loop data: äºåã«èªã¿èŸŒãã§ãããããŒã¿ã«åŸã£ãŠã«ãŒãããŸãããã®ã«ãŒãã®éå§å°ç¹ã§ããèšå®ç»é¢ãéããšã«ãŒãIDãçºè¡ãããŸããããã¯åŸã§äœ¿ãã®ã§é ã®çé
ã«çœ®ããŠãããŸã(ã³ããŒããŠãããŸã)ããŸãã
Loop throughã®èšå®ã§VariableãéžæããVariable nameã«ã¯å ã»ã©ã®answer_dataãå ¥ããŸãã - Forms: ç»é¢äžã®ç¹å®ã®å
¥åé
ç®ã«å
¥åãè¡ããŸãã
- èšå®ãéããšCSS Selector(ãŸãã¯XPath)ãæå®ããããã«æ±ããããã®ã§ã察象ã®ç»é¢å ã®inputèŠçŽ ãªã©ã®CSS Selectorãæå®ããŸããããããéãšã³ãžãã¢ã«ãšã£ãŠã¯ãããäžçªé£ããéšåã ãšæãã®ã§ãé©å®çæAIã«è§£èª¬ããŠããã£ããã察象ã®ãµã€ãã®HTMLãçæAIã«äžããŠCSS Selectorãäœã£ãŠããããšè¯ãã§ãããŸããAutomaã«ã¯GUIã§CSS Selectorãç®åºããæ©èœãããã®ã§ããã䜿ãã®ãè¯ãã§ãããã
- å
¥åå€ã¯CSVã®å€ã䜿ãããã§ãããã®å Žåã
{{loopData.qwLYrY.name}}ãšããããã«èšå®ããŸããqwLYrYã¯ã«ãŒãIDãªã®ã§ãèªåã®ã¯ãŒã¯ãããŒã®Loop dataã«å¯Ÿå¿ããé©åãªå€ãèšå®ããŸããnameã®éšåã¯CSVã®ååã§ãã - ä»ïŒã€ã®Formsãåãããã«èšå®ããŸããCSS Selectorã®å€ãšå ¥åå€ã®ååã®éšå(name, age, favorite_food)ãé©åã«å€æŽããŸãã
- Click element: ç¹å®ã®CSSã»ã¬ã¯ã¿ã®èŠçŽ ãã¯ãªãã¯ããŸããä»åã®å ŽåãGoogle formã®éä¿¡ãã¿ã³ã察象ãšããŸãã
- Loop break: ã«ãŒãã®çµäºïŒæ¬¡ã®å埩ã«ç§»ãïŒã§ãã
å®è¡
宿ãããä¿åãã¿ã³ãæŒããŠããåçãã¿ã³ãæŒããŸãã
ããŸãããŒã¿ã®æå ¥ãã§ããŸããã

ããã§å€§éã®æäœãããŒã¿ç»é²ããã£ãŠã楜ã§ããŸããã
Automaã®ãã®ä»Tips
æåŸã«å®éã«ã¯ãŒã¯ãããŒãçµãäžã§ããã£ãç¹ãã³ããªã©ãç°¡åã«åæããŠãããŸãã
- ã¯ãŒã¯ãããŒãããŸãåããªãå Žåã¯Logæ©èœã䜿ããŸããããã©ã®ã¹ãããã§æ¢ãŸã£ããããã®åå ã¯äœããªã©ãåãããŸãã
- Formsãªã©ã«èšå®ã§ããWait for selectorã¯åºæ¬çã«ONã«ããŸãããããŸã ç»é¢ã®ããŒããå®äºã§ããŠããªãå Žåã¯å€§æµã¯HTMLã®èŠçŽ ã¯åºçŸããŠããªãã®ã§ãåœç¶Selectorã§éžæã§ããŸãããèŠã€ãããªããšãããšã©ãŒã«ãªã£ãŠããŸãããšãããã§åé¿ããŸãããã
- inputèŠçŽ ãšèŠããããŠå®ã¯ããã§ãªãã±ãŒã¹ãããã®ã§ãFormsãªã©ã®å ¥åãäžæããããªãå Žåã¯HTMLãè¯ãã¿ãŸããããäŸãã°Tiptap Editorãªã©ã®ãªãããªãšãã£ã¿ã¯inputèŠçŽ ã䜿ã£ãŠããŸãããå ¥åã€ãã³ããJavaScriptã§æŸã£ãŠãããdivãpã¿ã°ã§å ¥åã衚çŸããŠããŸãããªãããšãã£ã¿ã«å¯ŸããŠå ¥åèªååãè¡ãããå Žåã¯äžå·¥å€«å¿ èŠã§ããå ·äœçã«ã¯JavaScript CodeèŠçŽ ã䜿ããŸããããã䜿ã£ãŠdivãpãèªåã§çµã¿ç«ãŠãŠåœè©²ç®æã«Insertããããšã§å ¥åãèªååã§ããŸããããã¯ãã¯ãITãšã³ãžãã¢ã§ãªããšäœæãä¿å®ã§ããªããšæãã®ã§ããããåé¡ã«ãªã£ãŠããå Žåã¯ãã©ãŠã¶ã§ã¯ãªãPCæäœèªäœãèªååããRPAããŒã«ãæ€èšããæ¹ãè¯ããããããŸããã
- ä»åã¯è§£èª¬ããŸããã§ãããæ¡ä»¶ã«å¿ããŠå®è¡ããåŠçãå€ãããå Žå(åå²ãããå Žå)ã¯ãConditionsã䜿ããŸãããã
- ä»åã¯CSVããŒã¿ãããšã«ããŸããããç»é¢äžã®ãªã¹ãã®èŠçŽ ãå šãŠæ¶ãããŸã§åé€ãç¹°ãè¿ãããããšãããããªå Žåã¯Loop Elementã䜿ããŸãããã
ãã£ãŠã¿ãææ³ãšããŠã¯ããã°ã©ãã§ãäžéšèŠåŽããŸãããããããåŠç次第ã§ãã2,3æéã¯æ§ç¯ã«ããããããããŸããããã ãäžåºŠèŠããŠããŸããšæ¬¡ããã¯ç°¡åã ãšæããŸããã«ãŒãåŠçãªã©ãè¥å¹²é¢åã ã£ããããã®ã§ãPlaywrightçã®ã³ãŒãããŒã¹ã§äœãæ¹ãæ©ããšã¯æããŸãã
çŸåšãããã«ãªã§ã¯ITãšã³ãžãã¢ãåéããŠããŸããèå³ã®ããæ¹ã¯ãã²ãæ°è»œã«ãé£çµ¡ãã ããïŒ