Puppeteer悒ä½æć£ć¦ćƒœć‚æćƒ³ć‚ÆćƒŖ惃ć‚ÆćØćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰

Puppeteer恧Chromeč‡Ŗå‹•åŒ–ć§äø€ē•Ŗč‰Æćåˆ©ē”Øć•ć‚Œć‚‹ć§ć‚ć‚ć†ć‚·ćƒ¼ćƒ³ćŒć€Œćƒ‘ćƒ©ćƒ”ćƒ¼ć‚æ悒čØ­å®šć—ć¦ć€ćƒœć‚æćƒ³ć‚ÆćƒŖ惃ć‚Æ恧CSVćƒ•ć‚”ć‚¤ćƒ«ć‚’ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć€ć§ćÆćŖ恄恠悍恆恋ćØę€ć„ć¾ć™ć€‚å®ŸćÆ恓悌态RPA恠ćØ非åøøć«ć‚·ćƒ³ćƒ—ćƒ«ćŖć‚µć‚¤ćƒˆćŖ悉恰ćØ悂恋恏态ēµę§‹č¤‡é›‘ćŖ仕ēµ„ćæć®ć‚µć‚¤ćƒˆć®å “åˆć€ćØć¦ć‚‚é›£ć—ć„ä½œę„­ć®ļ¼‘恤恧恙怂

恗恋恗态Puppeteerć®å “åˆć€JavaScriptć®å®Ÿč”Œć‚„ć‚Øćƒ¬ćƒ”ćƒ³ćƒˆę“ä½œćŒåÆčƒ½ć§ć‚ć£ćŸć‚Šć€Chrome恫åÆ¾ć—ć¦å‘½ä»¤ć‚’é€ć‚Œć‚‹ć®ć§ć€éžåøøć«é›£ć—ć„ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć§ć‚ć£ć¦ć‚‚åÆčƒ½ć ć£ćŸć‚Šć—ć¾ć™ć€‚ä»Šå›žćÆćØć‚ć‚‹ć‚µć‚¤ćƒˆć®CSVćƒ•ć‚”ć‚¤ćƒ«ć‚’ćƒ‡ć‚¹ć‚Æćƒˆćƒƒćƒ—ć«ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć—ć¦ćæ悈恆ćØę€ć„ć¾ć™ć€‚

今回ä½æē”Øć™ć‚‹ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖē­‰

ä»Šå›žć€ćƒ¦ćƒ¼ć‚¶ć‹ć‚‰ć®å…„åŠ›ć‚’å—ć‘ä»˜ć‘ć‚‹promptsćØć„ć†ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć‚’ä½æć£ć¦ć„ć¾ć™ć€‚ćƒ‘ć‚¹ćƒÆćƒ¼ćƒ‰ć‚„ID悒Puppeteerć®ć‚¹ć‚ÆćƒŖ惗惈äøŠć«ē›“ę›øćć™ć‚‹ć®ćÆć‚»ć‚­ćƒ„ćƒŖćƒ†ć‚£äøŠćƒžć‚ŗć‚¤ć®ć§ć€ćć†ć„ć£ćŸć‚±ćƒ¼ć‚¹ć§ä½æć„ć¾ć™ć€‚ä»Šå›žćÆ幓åŗ¦ćØęœˆć®ęŒ‡å®šć ć‘ć§ć€ćƒ‘ć‚¹ćƒÆćƒ¼ćƒ‰ćÆē›“ę›ø恍恧恙怂ę³Øꄏ恌åæ…要恧恙怂

ć¾ćŸć€ä»Šå›žpkgć§ćƒ‘ćƒƒć‚±ćƒ¼ć‚øćƒ³ć‚°ć™ć‚‹ćØ後čæ°ć®å•é”ŒćŒē™ŗē”Ÿć™ć‚‹ć®ć§ć€nexeć§ćƒ‘ćƒƒć‚±ćƒ¼ć‚øć‚’ä½œć£ćŸćØć“ć‚ć€ćƒ•ć‚”ć‚¤ćƒ«ć‚µć‚¤ć‚ŗć‚‚å°ć•ćć€ć¾ćŸćć”ć‚“ćØevaluateå‡ŗę„ćŸć®ć§ć€ć“ć”ć‚‰ć§exeć‚’ä½œęˆć—ć¾ć—ćŸć€‚nexeč‡Ŗ体ćÆć‚¤ćƒ³ć‚¹ćƒˆćƒ¼ćƒ«ćÆ非åøø恫ē°”å˜ć§ć™ć€‚

ä»Šå›žć®ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰äøŠć®å•é”Œē‚¹

今回åÆ¾č±”ć«ć—ć¦ć„ć‚‹ć‚µć‚¤ćƒˆćÆ仄äø‹ć®ć‚ˆć†ćŖ問锌ē‚¹ć‚’ęŠ±ćˆć¦ć„ć¾ć™ć€‚ćć®ć¾ć¾ē“ ē›“ć«ćƒ•ć‚”ć‚¤ćƒ«ć‚’å–ć‚Šć«č”Œć“ć†ćØ恙悋ćØ态ć‚Øćƒ©ćƒ¼ć‚’åć„ć¦ę­¢ć¾ć£ć¦ć—ć¾ć„ć¾ć™ć€‚ć“ć®å•é”Œē‚¹ć‚’ć‚ÆćƒŖć‚¢ć—ć¤ć¤ć€ęŒ‡å®šć®ćƒ•ć‚©ćƒ«ćƒ€ć«ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć™ć‚‹ē‚ŗć«ć„ćć¤ć‹ē“°å·„ć‚’ę–½ć—ć¾ć™ć€‚

  1. CSVćƒ•ć‚”ć‚¤ćƒ«ć®å¹“åŗ¦ć€ęœˆć‚’ęŒ‡å®šć™ć‚‹ćƒ†ć‚­ć‚¹ćƒˆćƒœćƒƒć‚Æć‚¹ć«ćÆonChange恧JavaScriptćŒå…„ć£ć¦ć—ć¾ć£ć¦ć„ć‚‹ć€‚
  2. 1.恮JavaScriptćÆå®Ÿč”Œć•ć‚ŒćŖ恄ćØ適切ćŖęœŸé–“ęŒ‡å®šćŒå‡ŗę„ćŖć„ć®ć§ć€ćƒ†ć‚­ć‚¹ćƒˆćƒœćƒƒć‚Æć‚¹ć«å€¤ć‚’å…„ć‚Œć‚Œć°OKćØć„ć†ć‚ć‘ć«ćÆ恄恋ćŖ恄怂
  3. headlessć®å “åˆć€åå‰ć‚’ć¤ć‘ć¦äæå­˜ć®ćƒ€ć‚¤ć‚¢ćƒ­ć‚°ćÆå‡ŗ恦恓ćŖ恄恮恧态Chromeć«å “ę‰€ć‚’ęŒ‡å®šć™ć‚‹åæ…č¦ćŒć‚ć‚‹ļ¼ˆćƒ‡ćƒ•ć‚©ćƒ«ćƒˆćÆWindowsćŖć‚‰ć°ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ćƒ•ć‚©ćƒ«ćƒ€ļ¼‰ć€‚
  4. ć‚µć‚¤ćƒˆäøŠć®ćƒ‘ćƒ©ćƒ”ćƒ¼ć‚æęŒ‡å®šē”»é¢ē­‰ćŒć€Œiframeć€ć®äø­ć«å…„ć£ć¦ć—ć¾ć£ć¦ć„ć¦ę“ä½œćŒé¢å€’
  5. 幓åŗ¦ćØęœˆć‚’ęŒ‡å®šć™ć‚‹ćƒ†ć‚­ć‚¹ćƒˆćƒœćƒƒć‚Æć‚¹ćÆćÆć˜ć‚ć‹ć‚‰å€¤ćŒå…„ć£ć¦ć—ć¾ć£ć¦ć„ć‚‹
  6. ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ćƒœć‚æćƒ³ć®targetå±žę€§ćŒ_blank恫ćŖć£ć¦ć—ć¾ć£ć¦ć„ć¦ć€ę–°ć—ć„ć‚æćƒ–ć§é–‹ć„ć¦ć—ć¾ć†ć€‚ć“ć®ć¾ć¾ć§ćÆ态pageę“ä½œćŒå‡ŗę„ćŖ恄恧ć‚Øćƒ©ćƒ¼ćŒå‡ŗć¦ć—ć¾ć†ć€‚
  7. ChromećÆē®”ē†č€…ęØ©é™ć§ćÆćŖććƒ¦ćƒ¼ć‚¶ęØ©é™ć§ć‚¤ćƒ³ć‚¹ćƒˆćƒ¼ćƒ«ć™ć‚‹ć®ć§ć€ć„ć¤ć‚‚ć®å “ę‰€ć§ćÆćŖ恄

ē‰¹ć«é¢å€’ćŖć®ćŒć€6.ć®å•é”Œć€‚ćƒœć‚æćƒ³ć‚’ć‚ÆćƒŖ惃ć‚Æ恙悋ćØꖰ恗恄ć‚æćƒ–ć§é–‹ć‹ć‚Œćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ćŒå§‹ć¾ć‚‹ć®ć§ć™ćŒć€ćć†ć™ć‚‹ćØ定ē¾©ć—ćŸpage恋悉ćÆå¤–ć‚Œć¦ć—ć¾ć†ē‚ŗ态2恤ē›®ć®ć‚æćƒ–ć‚’ę“ä½œć—ćŖ恄ćØćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰å®Œäŗ†ćØå…±ć«ć‚Øćƒ©ćƒ¼ć‚’åćć€‚ć¾ćŸć€ć“ć®ę™‚ęŒ‡å®šć®ćƒ•ć‚©ćƒ«ćƒ€ć§ćÆćŖććƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ćƒ•ć‚©ćƒ«ćƒ€ć«ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć•ć‚Œć¦ć—ć¾ć„ć¾ć™ć€‚

恓恮Ꙃ恮ć‚Øćƒ©ćƒ¼ćÆ怌Error: EPERM: operation not permitted怍ćØć„ć£ćŸć‚‚ć®ć§ć€chrome恌äøę­£ēµ‚äŗ†ć—ćŸå½¢ć«ćŖć‚Šć¾ć™ć€‚

ć‚½ćƒ¼ć‚¹ć‚³ćƒ¼ćƒ‰

冒頭éƒØ分

index.js恫å…Ø恦čؘčæ°ć—ć¾ć™ć€‚å†’é ­ć®éƒØåˆ†ć«ćÆćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć®čŖ­ćæč¾¼ćæćØć€ćƒ‡ć‚¹ć‚Æćƒˆćƒƒćƒ—ć®ćƒ‘ć‚¹ć‚’å–å¾—ć™ć‚‹ć‚³ćƒ¼ćƒ‰ć‚’ē”Øę„ć—ć¦ćŠćć¾ć™ć€‚

  • ć‚°ćƒ­ćƒ¼ćƒćƒ«å¤‰ę•°ć§ćƒ‡ć‚¹ć‚Æćƒˆćƒƒćƒ—ć®ćƒ‘ć‚¹ć‚’å–å¾—ć—ć¦ćŠćć¾ć™ć€‚
  • 恤恄恑恦态getprompt()ć‚’å®Ÿč”Œć—ć¦ćƒ¦ćƒ¼ć‚¶ć®å…„åŠ›ć‚’å—ä»˜å¾…ć”ć—ć¾ć™ć€‚
  • chromećÆć„ć¤ć‚‚ć®ć€ŒC:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe怍恧ćÆćŖ恏态怌C:\\Users\\ćƒ¦ćƒ¼ć‚¶ćƒ¼å\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe怍ćØćŖć‚‹ćŸć‚ć€ćƒ¦ćƒ¼ć‚¶ęÆŽć®ćƒ‘ć‚¹ć‚’å–å¾—ć—ć¦ć€chromepathć«ę ¼ē“ć™ć‚‹

ćƒ—ćƒ­ćƒ³ćƒ—ćƒˆå…„åŠ›å—ä»˜éƒØ分

  • prompts悒ä½æć£ć¦ć€2恤恮č³Ŗå•ć‚’å—ć‘ä»˜ć‘ć‚‹ć‚ˆć†ć«ć—ć¾ć™ć€‚
  • nendoćØmonth恮2恤悒č³Ŗå•ć—ć€ę•°å€¤ć§å…„åŠ›ć‚’ć—ć¦ć‚‚ć‚‰ć„ć¾ć™ć€‚
  • å–å¾—ć—ćŸę•°å€¤ć‚’å¼•ę•°ć«main()ć‚’å®Ÿč”Œć—ć¾ć™ć€‚

図ļ¼šćƒ—ćƒ­ćƒ³ćƒ—ćƒˆć®å…„力ē”»é¢

PuppeteeréƒØ分

  • 今回ćÆWindowsć§å®Ÿč”Œć—ć¦ć‚‹ć®ć§ć€executablePathćÆChromećŒć‚¤ćƒ³ć‚¹ćƒˆćƒ¼ćƒ«ć•ć‚Œć¦ć„ć‚‹ćƒ‘ć‚¹ć‚’ęŒ‡å®š
  • Page.setDownloadBehavior恫恦Chrome恫åÆ¾ć—ć¦ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰å…ˆćƒ•ć‚©ćƒ«ćƒ€ć‚’ęŒ‡å®šć—ć¦ć„ć¾ć™ć€‚ä»Šå›žćÆćƒ‡ć‚¹ć‚Æćƒˆćƒƒćƒ—ć‚’ęŒ‡å®šć€‚
  • ćƒ­ć‚°ć‚¤ćƒ³ćƒšćƒ¼ć‚ø恧IDćØPASSć§ćƒ­ć‚°ć‚¤ćƒ³å¾Œć€å†åŗ¦ē‰¹å®šć®ćƒšćƒ¼ć‚øļ¼ˆiframeå†…ć®URLļ¼‰ć‚’ē›“ꎄč”Øē¤ŗć™ć‚‹ć‚ˆć†ć«page.gotoć—ć¦ć„ć¾ć™ć€‚
  • 幓åŗ¦ćØ꜈ćÆonChangeå±žę€§ćŒå…„ć£ć¦ć‚‹äøŠć«ć€maxlengthćŒęŒ‡å®šć•ć‚Œć¦ć„ć‚‹ć€‚äø€åŗ¦ć‚ÆćƒŖć‚¢ć—ć¦ć‹ć‚‰ć§ćŖ恄ćØå…„åŠ›ćŒå‡ŗę„ćŖ恄怂
  • äøŠčØ˜ć®ć‚ÆćƒŖć‚¢ć‚’ć™ć‚‹ćŸć‚ć«ć€page.$eval恫恦input恮äø­čŗ«ć‚’ē©ŗć«ć—ć¦ć„ć¾ć™ć€‚
  • ē¶šć‘恦page.keyboard.typeć«ć¦å¼•ę•°ć§å—ć‘å–ć£ćŸå€¤ć‚’å…„åŠ›
  • onChangeć‚’åƒć‹ć›ć‚‹ē‚ŗć«é©å½“ćŖćƒ†ć‚­ć‚¹ćƒˆćƒœćƒƒć‚Æć‚¹ć‚’focus恗恦态sleepå®Ÿč”Œć€‚
  • åŒę§˜ć®ä½œę„­ć‚’ęœˆć®å…„åŠ›ę¬„ć«åÆ¾ć—ć¦ć‚‚å®Ÿč”Œć™ć‚‹
  • ć‚µć‚¤ćƒˆäøŠć®ć‚Ŗćƒ—ć‚·ćƒ§ćƒ³ć®éøęŠžć€ćƒ‰ćƒ­ćƒƒćƒ—ćƒ€ć‚¦ćƒ³é …ē›®ć®éøꊞ态ꤜē“¢ć®ć‚ÆćƒŖ惃ć‚Æ悒恙悋ćØć€ę”ä»¶ć«åˆč‡“ć—ćŸćƒ‡ćƒ¼ć‚æ恌č”Øē¤ŗ恕悌悋怂
  • č”Øē¤ŗ恕悌恟悉态CSVćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ćƒœć‚æćƒ³ć‚’ć‚ÆćƒŖ惃ć‚Æć™ć‚‹ćŒć€ćć®ć¾ć¾ć§ćÆ_blankć§é–‹ć„ć¦ć—ć¾ć†ć®ć§ć€åÆ¾č±”ć®form恮targetå±žę€§ć‚’page.$eval恫恦ē©ŗ恫ę›øćę›ćˆć¦ćŠćļ¼ˆć“ć‚Œć§ć€ć“ć®ć‚æćƒ–ć®äø­ć§ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ćŒå®Ÿč”Œć•ć‚Œć‚‹ć‚ˆć†ć«ćŖ悋ļ¼‰
  • ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰äø­ć€ę‹”å¼µå­ćŒ.crdownloadć®ćƒ•ć‚”ć‚¤ćƒ«ćŒć‚ć‚‹å “åˆć«ćÆć€ćƒ«ćƒ¼ćƒ—ć§10ē§’ć‚¦ć‚§ć‚¤ćƒˆć‚’å®Ÿč”Œć™ć‚‹ć‚ˆć†ć«ć—ć¦ć‚ć‚‹
  • 完äŗ†ć—ćŸć‚‰ć€browser.close()ć§å‡¦ē†ć‚’é–‰ć˜ć‚‹
  • ēµ‚äŗ†ć—ćŸć‚ˆć£ć¦ćƒ”ćƒƒć‚»ćƒ¼ć‚øćŒć»ć—ć„ćŖ悉恰态VBSć®ćƒ•ć‚”ć‚¤ćƒ«ć§ć‚‚ē”Øę„ć—ć¦ć€å‘¼ć³å‡ŗ恗恦äøŠć’ć‚‹ćØč‰Æ恄怂
  • Node.jsćŖ恮恧态ē‰¹å®šć®å “ę‰€ć«ćƒ•ć‚©ćƒ«ćƒ€ć®ęœ‰ē„”悒ē¢ŗčŖć—ć¦ćƒ•ć‚©ćƒ«ćƒ€ć‚’ä½œęˆć—ć¦ęŒ‡å®šć™ć‚‹ć§ć‚ć£ćŸć‚Šć€ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć—ćŸćƒ•ć‚”ć‚¤ćƒ«ć‚’ē‰¹å®šć®ćƒ•ć‚©ćƒ«ćƒ€ć«ē§»å‹•ć™ć‚‹ćØć„ć£ćŸå¾Œå‡¦ē†ć‚’ä»˜ć‘åŠ ćˆć‚‹ćØå°šć€č‰Æ恄恋悂恗悌ćŖ恄怂
  • ęœ€å¾Œć«await page.addScriptTag({ content: script });ć‚’å®Ÿč”Œć™ć‚‹ć“ćØć§ć€ć‚µć‚¤ćƒˆć«JavaScriptć‚’åŸ‹ć‚č¾¼ćæå®Ÿč”Œć€‚ć“ć®ę™‚script恫ćÆwindow.alertć‚’ć¤ć‘ć¦ć„ć¾ć™ćŒć€ć“ć‚Œć§å®Œäŗ†ćƒ”ćƒƒć‚»ćƒ¼ć‚ø悒å‡ŗć™ć‚ˆć†ć«ć™ć‚‹ćØć€ćƒ¦ćƒ¼ć‚¶ć«é€šēŸ„恌å‡ŗę„ć‚‹ć®ć§Good恧恙怂

ćƒ•ć‚”ć‚¤ćƒ«åć‚’å¤‰ę›“ć—ć¦ęŒ‡å®šć®ćƒ•ć‚©ćƒ«ćƒ€ćøē§»å‹•

Puppeteerć§ęŒ‡å®šć®ćƒ•ć‚©ćƒ«ćƒ€ć«ćć®ć¾ć¾ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ćÆę—¢ć«äøŠčØ˜ć§ē¤ŗć—ćŸć‚³ćƒ¼ćƒ‰ć§å®Ÿē¾å‡ŗę„ć¦ć„ć¾ć™ć€‚ć—ć‹ć—ć€å®Ÿå‹™ć®äø–ē•Œć§ćÆ恝悌恧ć‚Ŗć‚·ćƒžć‚¤ć§ćÆć‚ć‚Šć¾ć›ć‚“ć€‚ę‰€å®šć®å “ę‰€ć«ä¾‹ćˆć°å¹“åŗ¦ęœˆć§ćƒ•ć‚©ćƒ«ćƒ€ć‚’ä½œęˆć—ć€ćć®äø­ćøćƒ•ć‚”ć‚¤ćƒ«ć‚’ē§»å‹•ć€ćƒ•ć‚”ć‚¤ćƒ«åć‚‚å¹“ęœˆę—„ć§ć‚ć‹ć‚Šć‚„ć™ć„åå‰ć‚’ć¤ć‘ć‚‹ćØć„ć£ćŸä½œę„­ćŒåœ°å‘³ć«ę™‚é–“ć‚’é£Ÿć„ć¾ć™ć€‚ć“ć“ć‚‰č¾ŗćÆNode.jsć§ć®ä½œę„­ć«ćŖć‚Šć¾ć™ć€‚

ćƒ•ć‚©ćƒ«ćƒ€ć‚’ä½œęˆ

č‡Ŗåˆ†ć®å “åˆć€ćƒ•ć‚”ć‚¤ćƒ«ć®ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ā‡’ćƒŖćƒćƒ¼ćƒ ā‡’ćƒ•ć‚”ć‚¤ćƒ«ć‚’ē§»å‹•ć‚’ć™ć‚‹å “åˆć€ćƒ‡ć‚¹ć‚Æćƒˆćƒƒćƒ—ć«äø€ę™‚ćƒ•ć‚©ćƒ«ćƒ€ć‚’ä½œć‚Šć€åŒę™‚ć«ę‰€å®šć®å “ę‰€ć«å¹“åŗ¦ęœˆć§ćƒ•ć‚©ćƒ«ćƒ€ć‚’ä½œęˆć—ć¦ć„ć¾ć™ć€‚ć—ć‹ć—ć€ćƒ•ć‚©ćƒ«ćƒ€ä½œęˆå‘Ø悊ćÆć€ä¾‹ćˆć°ę—¢ć«åŒåć®ćƒ•ć‚©ćƒ«ćƒ€ćŒć‚ć£ćŸå “åˆć§ć‚ć£ćŸć‚Šć€åÆ¾č±”ć®ćƒ‘ć‚¹ćŒå­˜åœØ恗ćŖ恄ļ¼ˆBox DrivećŖ恩悒ä½æć£ć¦ć„ć¦ć€Boxć«ćƒ­ć‚°ć‚¤ćƒ³ć—ć¦ćŖć‹ć£ćŸē­‰ļ¼‰ć®å “åˆć®ć‚Øćƒ©ćƒ¼å‡¦ē†ē­‰ćŒéžåøøć«é¢å€’ć§ć™ć€‚

ć¾ćŸć€Box Driveć®å “åˆćƒ•ć‚”ć‚¤ćƒ«ć®ćƒ‘ć‚¹ć«ćƒ­ć‚°ć‚¤ćƒ³ćƒ¦ćƒ¼ć‚¶åćŒå…„ć‚‹Usersćƒ‡ć‚£ćƒ¬ć‚Æ惈ćƒŖ仄äø‹ć«ćƒžć‚¦ćƒ³ćƒˆć•ć‚Œć‚‹ć®ć§ć€äŗŗć«ć‚ˆć£ć¦ćƒ‘ć‚¹ćŒē•°ćŖ悋ćØć„ć†å•é”Œć‚‚ć‚ć£ćŸć‚Šć—ć¾ć™ć€‚ć“ć‚Œć‚‰é¢å€’ćŖå•é”Œć‚’å›žéæć—ć¤ć¤ä½œęˆć—ćŖ恑悌恰ćŖć‚Šć¾ć›ć‚“ć€‚ä»„äø‹ć«åæ…要ćŖéƒØåˆ†ć ć‘ć®ć‚³ćƒ¼ćƒ‰ć‚’ęŽ²ē¤ŗć—ć¾ć™ć€‚ä»Šå›žćÆ态make-dirćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć‚’ä½æ恆恓ćØć«ć—ć¾ć™ć€‚

  • dir_desktopå¤‰ę•°ć«ćÆć€ćƒ‡ć‚¹ć‚Æćƒˆćƒƒćƒ—ć«ä½œęˆć—ćŸtmpmanćØć„ć†ćƒ•ć‚©ćƒ«ćƒ€ć‚’ęŒ‡å®šć—ć¦ć„ć¾ć™ć€‚ć“ć‚ŒćŒćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰å…ˆć®äø€ę™‚ćƒ•ć‚©ćƒ«ćƒ€ć«ćŖć‚Šć¾ć™ć€‚
  • osćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć‹ć‚‰ćƒ­ć‚°ć‚¤ćƒ³ćƒ¦ćƒ¼ć‚¶åć‚’å–å¾—ć—ć€Box Driveć®ę‰€å®šć®ćƒ•ć‚©ćƒ«ćƒ€ć‚’targetPathå¤‰ę•°ć«ęŒ‡å®šć—ć¾ć™ć€‚ć“ć“ć«å¹“åŗ¦ęœˆćØć„ć†åå‰ć§ć‚µćƒ–ćƒ•ć‚©ćƒ«ćƒ€ć‚’ä½œęˆć™ć‚‹ć“ćØ恫ćŖć‚Šć¾ć™ć€‚
  • promptć«ć¦ä¾‹ćˆć°é–‹å§‹ę—„ä»˜ć‚’å–å¾—ć—ć¦ćŠćć€‚ćƒ¦ćƒ¼ć‚¶ć®å…„åŠ›ć—ćŸę—„ä»˜ć‚’å…ƒć«å¹“åŗ¦ęœˆć®å€¤ć‚’substrć«ć¦å–ć‚Šå‡ŗ恗态subfolderå¤‰ę•°ć«ę ¼ē“ć™ć‚‹
  • make-dir恫恦äø€ę™‚ćƒ•ć‚©ćƒ«ćƒ€ć‚’ä½œęˆć—ćŸå¾Œć«ć€ć•ć‚‰ć«make-dir恫恦targetPathęŒ‡å®šć®ē›“äø‹ć«subfolderć§ęŒ‡å®šć—ćŸćƒ•ć‚©ćƒ«ćƒ€ć‚’ä½œęˆć™ć‚‹
  • ćƒ—ćƒ­ć‚°ćƒ©ćƒ ēµ‚äŗ†ę™‚恫fs.rmdirSync(dir_desktop);ć‚’å®Ÿč”Œć™ć‚Œć°ć€äø€ę™‚ćƒ•ć‚©ćƒ«ćƒ€ć‚’å‰Šé™¤ć§ćć¾ć™ć€‚éžåŒęœŸå®Ÿč”ŒćŖ恮恧čؘčæ°ć™ć‚‹å “ꉀ恫ę³Øꄏ

ćƒ•ć‚”ć‚¤ćƒ«ć®ē§»å‹•ļ¼ˆåå‰ć®å¤‰ę›“ć‚‚č¾¼ćæļ¼‰

Node.jsć§ć®ćƒ•ć‚”ć‚¤ćƒ«ć®ē§»å‹•ćØåå‰å¤‰ę›“ćÆåŒć˜ćƒ”ć‚½ćƒƒćƒ‰ć§å‡ŗę„ć‚‹ć®ć§ć€äø€ē™ŗć§å®Ÿē¾ćŒåÆčƒ½ć§ć™ć€‚äø€ę™‚ćƒ•ć‚©ćƒ«ćƒ€ć«ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć—ć¦ćƒŖćƒćƒ¼ćƒ ćØē§»å‹•ć‚’恙悋ćØ态äø€ę™‚ćƒ•ć‚”ć‚¤ćƒ«ć‹ć‚‰ćƒ•ć‚”ć‚¤ćƒ«ćŒę¶ˆćˆć¦ćć‚Œć‚‹ć®ć§ć€ę¬”ć®ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć«ć‚‚ć¤ćŖ恒悋恓ćØ恌å‡ŗę„ć¾ć™ć€‚

  • fs.renameć«ć¦ć€å¼•ę•°ć«ē¾åœØć®ćƒ•ć‚”ć‚¤ćƒ«ć®ćƒ•ćƒ«ćƒ‘ć‚¹ć€ē§»å‹•å…ˆć®ćƒ•ć‚”ć‚¤ćƒ«ć®ćƒ•ćƒ«ćƒ‘ć‚¹ļ¼ˆć“ć“ć§ę–°ć—ć„åå‰ć‚’ęŒ‡å®šļ¼‰ć§ć€ćƒŖćƒćƒ¼ćƒ ćØē§»å‹•ćŒåŒę™‚恫å‡ŗę„ć¾ć™ć€‚
  • č¤‡ę•°å€‹ć®ćƒ•ć‚”ć‚¤ćƒ«ć®å‡¦ē†ć®å “合ćÆćƒ«ćƒ¼ćƒ—ć®ä½œć‚Šę–¹ćØćƒ•ćƒ«ćƒ‘ć‚¹ć®ćƒ•ć‚”ć‚¤ćƒ«åć®å–å¾—ć®ä»•ę–¹ć‚’å¤‰ćˆć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ćŒć€äø€å€‹ćšć¤ć§ć‚ć‚Œć°ć“ć®ę–¹ę³•ćŒćƒ™ć‚æćƒ¼ć§ć™ć€‚
  • å†—é•·ę°—å‘³ć§ć™ćŒćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰äø­ćƒ•ć‚”ć‚¤ćƒ«ć®ē§»å‹•ćŒćŖć„ć‚ˆć†ć«ę‹”å¼µå­ćŒcrdowloadć®ćƒ•ć‚”ć‚¤ćƒ«ć®å “åˆćÆć‚¹ćƒ«ćƒ¼ć™ć‚‹ć‚ˆć†ć«ć—ć¦ć„ć¾ć™ć€‚

Box Driveć«ćƒ•ć‚”ć‚¤ćƒ«ć‚’ē§»å‹•ć™ć‚‹å “合

Box Driveć®ę‰€å®šć®ćƒ•ć‚©ćƒ«ćƒ€å†…ć«åÆ¾ć—ć¦ć€Node.jsäøŠć§ćƒ•ć‚©ćƒ«ćƒ€ć‚’ä½œć‚‹ć“ćØćÆåÆčƒ½ćŖć®ć§ć™ćŒć€å•é”ŒćÆäøŠčØ˜ć®ć‚³ćƒ¼ćƒ‰ć§ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć—ćŸćƒ•ć‚”ć‚¤ćƒ«ć‚’ē§»å‹•ć•ć›ć‚ˆć†ćØ恙悋ćØ态怌npm ERR! EXDEV: cross-device link not permitted, rename怍ćØå‡ŗć¦ć€ćƒ•ć‚”ć‚¤ćƒ«ćŒē§»å‹•å‡ŗę„ć¾ć›ć‚“ć€‚ćć“ć§ć€Box Driveć®ę‰€å®šć®ćƒ•ć‚©ćƒ«ćƒ€ć«åÆ¾ć—ć¦ć€äøŠčؘćØåŒć˜ć‚ˆć†ćŖ恓ćØć‚’å®Ÿē¾ć™ć‚‹ć«ćÆ态ćƒŖćƒćƒ¼ćƒ ć§ćÆćŖćć€ćƒ•ć‚”ć‚¤ćƒ«ć®ć‚³ćƒ”ćƒ¼ć‚’č”Œć„ć€ćć®å¾Œćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć—ćŸćƒ•ć‚”ć‚¤ćƒ«ć‚’å‰Šé™¤ć™ć‚‹ćØ恄恆ꉋ順悒čøć‚€ćØ実ē¾ćŒåÆčƒ½ć§ć™ć€‚

ć¾ćŸć€Box Driveć®å “åˆć€ćƒžć‚¦ćƒ³ćƒˆćƒ•ć‚©ćƒ«ćƒ€ćŒå„ćƒ¦ćƒ¼ć‚¶ćƒ•ć‚©ćƒ«ćƒ€ć§ć‚ć‚‹ćŸć‚ć€osćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć‚’ä½æć£ć¦ćƒ­ć‚°ć‚¤ćƒ³ćƒ¦ćƒ¼ć‚¶åć‚’å–å¾—ć—ć¦ć€ę‰€å®šć®ę ¼ē“å…ˆćƒ•ć‚©ćƒ«ćƒ€ć¾ć§ć®ćƒ‘ć‚¹ć‚’ē”Ÿęˆć—ć¦ćŠćåæ…č¦ćŒć‚ć‚‹ć®ć§ę³Øꄏ恌åæ…要恧恙怂

  • subfolder恌Box Driveć®ę‰€å®šć®ęŒ‡å®šćƒ•ć‚©ćƒ«ćƒ€ć«ćŖć‚Šć¾ć™ć€‚ć“ć“ć«ę ¼ē“ć™ć‚‹
  • rename恧ćÆćŖ恏copyFileć§ćƒ•ć‚”ć‚¤ćƒ«ć‚’ęŒ‡å®šć®å “ę‰€ć«ć‚³ćƒ”ćƒ¼ć€‚ćć®éš›ć«newnameć§ęŒ‡å®šć—ćŸćƒ•ć‚”ć‚¤ćƒ«åć«ć™ć‚‹ć€‚
  • 完äŗ†å¾Œć€ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰å…ƒć®ćƒ•ć‚”ć‚¤ćƒ«ć‚’å‰Šé™¤ć—ćŖ恄ćØäø€ę™‚ćƒ•ć‚©ćƒ«ćƒ€ćŒå‰Šé™¤ć§ććŖ恄恮恧ę³Øꄏ恧恙怂

input要ē“ ć«å¤‰ę•°ć®å€¤ć‚’ć‚»ćƒƒćƒˆć™ć‚‹

ćƒ†ć‚­ć‚¹ćƒˆćƒœćƒƒć‚Æć‚¹ć‚„ć‚»ćƒ¬ć‚Æ惈惜惃ć‚Æć‚¹ćŖ恩恮éøꊞ要ē“ ć«åÆ¾ć—ć¦ć€page.type恫恦1ę–‡å­—ćšć¤å…„åŠ›ć™ć‚‹ćƒ†ć‚Æ惋惃ć‚ÆćÆć‚ć‚Šć¾ć™ćŒć€é…ć„ć®ć§ć‚ć¾ć‚Šä½æ恄恟恏ćŖ恄ꉀ怂恝恓恧ē›“ꎄ态input要ē“ ćŖ恩恫åÆ¾ć—ć¦valueć«å€¤ć‚’ć‚»ćƒƒćƒˆć—ćŸć„ć“ćØćŒć‚ć‚Šć¾ć™ć€‚ćć®å€¤ć‚‚å¤‰ę•°ć«ę ¼ē“ć•ć‚Œć¦ć‚‹å€¤ć‚’ć‚»ćƒƒćƒˆć—ćŸć„ć‚±ćƒ¼ć‚¹ćŒēµę§‹ć‚ć‚‹ć®ć§ć™ćŒ

page.$eval('要ē“ å', el => el.value = å¤‰ę•°) 恧ćÆ态ć‚Øćƒ©ćƒ¼ćØćŖć‚Šå€¤ćÆć‚»ćƒƒćƒˆå‡ŗę„ć¾ć›ć‚“ć€‚ä»„äø‹ć®ć‚ˆć†ćŖå½¢ć§ć€å¤‰ę•°ć«å…„ć£ć¦ć‚‹å€¤ć‚’č¦ē“ ć«ć‚»ćƒƒćƒˆć—ć¾ć—ć‚‡ć†ć€‚åŒę§˜ć®ć‚³ćƒ¼ćƒ‰ć§el.target恧恂悌恰targetå±žę€§å€¤ć‚’å¤‰ę•°ć§å¤‰ę›“ć•ć›ć‚‹ć“ćØ恌åÆčƒ½ć§ć™ć€‚

ć¾ćŸć€select惜惃ć‚Æć‚¹ć®å “åˆćÆć€å„optionå€¤ć«é€šåøøćÆvaluećŒć‚»ćƒƒćƒˆć•ć‚Œć¦ć‚‹ć®ć§ć€ćć‚Œć‚‰ć‚’ęŒ‡å®šć™ć‚Œć°éøꊞ恕恛悋äŗ‹ćŒåÆčƒ½ć§ć™ć€‚

äøŠčØ˜ć®ä¾‹ć ćØ态optionå€¤ćŒ10恮éøęŠžč‚¢ć‚’éøęŠžć•ć›ć‚‹å‹•ä½œć«ćŖć‚Šć¾ć™ć€‚

exeåŒ–ć™ć‚‹äøŠć§ć®å•é”Œ

pkgć®å•é”Œē‚¹

ē¾åœØć®ć‚³ćƒ¼ćƒ‰ć€Node.jsäøŠć§å‹•ć‹ć™åˆ†ć«ćÆ問锌ćŖćå‹•ä½œć—ć¾ć™ć€‚ć—ć‹ć—ć€pkgć§ćƒ‘ćƒƒć‚±ćƒ¼ć‚øåŒ–ć™ć‚‹ćØ态page.$eval恮éƒØåˆ†ć§ć€ŒPassed function is not well-serializable怍ćØ恄恆ć‚Øćƒ©ćƒ¼ćŒå‡ŗć¾ć™ć€‚ć©ć†ć‚„ć‚‰ć€pkg恧evaluateć‚’åˆ©ē”Ø恙悋ćØć“ć®ć‚ˆć†ćŖē¾č±”ćŒčµ·ćć‚‹ć‚ˆć†ć§ć€ć‚­ćƒ¼å…„åŠ›ć®éƒØåˆ†ć«ć¤ć„ć¦ćÆ态仄äø‹ć®ć‚ˆć†ć«äæ®ę­£ć™ć‚‹äŗ‹ć§å…„åŠ›ćŒåÆčƒ½ć«ćŖć‚Šć¾ć—ćŸć€‚

問锌ćÆć€å¾ŒåŠć®ć€Œawait page.$eval('formć‚æ悰恮IDć‚’ęŒ‡å®šć™ć‚‹', el => el.target = '')怍恧态åÆ¾č±”ć®element恮targetå±žę€§ć‚’å¤‰ę›“ć™ć‚‹éƒØåˆ†ć€‚ć“ć“ćŒć©ć†ć—ć¦ć‚‚å¼•ć£ć‹ć‹ć£ć¦ć—ć¾ć†ć€‚ćć“ć§ć€pkg恧ćÆćŖ恏nexeć«ćƒ‘ćƒƒć‚±ćƒ¼ć‚øćƒ£ć‚’å¤‰ę›“ć—ć¦exeć‚’ä½œć£ć¦ćæć¾ć—ćŸć€‚

nexeć«å¤‰ę›“ć—ćŸę‰€ć€ä»Šå›žć®ć‚ˆć†ćŖElement恮ę›ø恍ꏛ恈恧evaluateć—ć¦ć‚‚å•é”ŒćŒē™ŗē”Ÿć™ć‚‹ć“ćØćŖ恏态ē„”äŗ‹ć«csvćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ćŒåÆčƒ½ć«ćŖć‚Šć¾ć—ćŸć€‚ćƒ‘ćƒƒć‚±ćƒ¼ć‚øćƒ³ć‚°ć®ć‚³ćƒžćƒ³ćƒ‰ć‚‚ē°”å˜ć§ć™ć€‚nexeć®ć»ć†ćŒpkgć‚ˆć‚Šć‚‚ćƒ•ć‚”ć‚¤ćƒ«ć‚µć‚¤ć‚ŗ恌10MBć»ć©å°ć•ć„ć®ć‚‚č‰Æ恄恧恙恭怂ē„”ē†ć—恦pkgć«ć“ć ć‚ć‚‹ē†ē”±ćÆć‚ć‚Šć¾ć›ć‚“ć€‚ćŸć ć—ć€Keytarć®ć‚ˆć†ćŖćƒć‚¤ćƒ†ć‚£ćƒ–ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ćÆåŒę¢±ć•ć‚ŒćŖ恄悈恆恧态node_modulesćƒ•ć‚©ćƒ«ćƒ€ćŒć‚ć‚‹å “ę‰€ć«exe悒ē½®ććØä½æćˆć¾ć™ćŒć€exeå˜ä½“ć ćØ参ē…§ć§ććšć€ć‚Øćƒ©ćƒ¼ć«ćŖć‚Šć¾ć™ć€‚

nexeć®å•é”Œē‚¹

Node.js v12.16.1恧nexe(v3.3.2)ć‚’ć‚¤ćƒ³ć‚¹ćƒˆćƒ¼ćƒ«ć—ć¦ä½æ恆ćØ态仄äø‹ć®ć‚ˆć†ćŖć‚Øćƒ©ćƒ¼ćŒå‡ŗć¦ć—ć¾ć„ć€exeć®ćƒ“ćƒ«ćƒ‰ćŒå‡ŗę„ć¾ć›ć‚“ć§ć—ćŸć€‚ćƒć‚°ć§ć™ć­ć€‚12.14.1ć®å “åˆć«ćÆ問锌ćŖććƒ“ćƒ«ćƒ‰ćŒć§ćć¾ć—ćŸć®ć§ć€ęœ€ę–°ē‰ˆć§ćÆćŖććƒćƒ¼ć‚øćƒ§ćƒ³ćƒ€ć‚¦ćƒ³ć—ć¦åˆ©ē”Ø恙悋ćØč‰Æ恄恧恗悇恆怂

ć¾ćŸć€ä½•ć‹ć®ę‹å­ć§nexeć‚’å®Ÿč”Œć—ć¦ć‚‚ćć‚“ćŖć‚³ćƒžćƒ³ćƒ‰ē„”ć„ć£ć¦čØ€ć‚ć‚Œć‚‹äŗ‹ćŒć‚ć‚Šć¾ć™ć€‚ćć®å “åˆć€Windowsć®å “åˆćÆ仄äø‹ć®ćƒ‘ć‚¹ć‚’ē’°å¢ƒå¤‰ę•°ć«čæ½åŠ ć™ć‚‹ćØč‰Æ恄恧恙怂

  1. ć‚æć‚¹ć‚Æćƒćƒ¼ć®ę¤œē“¢ēŖ“ć‚ˆć‚Šć€Œć‚·ć‚¹ćƒ†ćƒ ć®č©³ē“°čØ­å®šć€ć‚’ę¤œē“¢å®Ÿč”Œ
  2. č©³ē“°čح定ć‚æćƒ–ć®äø­ć«ć‚ć‚‹ē’°å¢ƒå¤‰ę•°ć‚’ć‚ÆćƒŖ惃ć‚Æ
  3. ćƒ¦ćƒ¼ć‚¶ē’°å¢ƒå¤‰ę•°ć®äø­ć«ć‚ć‚‹Path悒éøꊞ恗恦ē·Ø集悒ć‚ÆćƒŖ惃ć‚Æ
  4. ę–°č¦ć‚’ć‚ÆćƒŖ惃ć‚Æ恙悋
  5. 仄äø‹ć®ćƒ‘ć‚¹ć‚’čæ½åŠ ć—恦恂恒恦OK悒恙悋

関連ćƒŖćƒ³ć‚Æ

ć‚³ćƒ”ćƒ³ćƒˆć‚’ę®‹ć™

ćƒ”ćƒ¼ćƒ«ć‚¢ćƒ‰ćƒ¬ć‚¹ćŒå…¬é–‹ć•ć‚Œć‚‹ć“ćØćÆć‚ć‚Šć¾ć›ć‚“ć€‚ ā€» ćŒä»˜ć„ć¦ć„ć‚‹ę¬„ćÆåæ…須項ē›®ć§ć™

ć“ć®ć‚µć‚¤ćƒˆćÆć‚¹ćƒ‘ćƒ ć‚’ä½Žęø›ć™ć‚‹ćŸć‚ć« Akismet 悒ä½æć£ć¦ć„ć¾ć™ć€‚ć‚³ćƒ”ćƒ³ćƒˆćƒ‡ćƒ¼ć‚æć®å‡¦ē†ę–¹ę³•ć®č©³ē“°ćÆć“ć”ć‚‰ć‚’ć”č¦§ćć ć•ć„ć€‚