Google Apps Script恋悉Twitter API v2悒ä½æć£ć¦ćƒ„ć‚¤ćƒ¼ćƒˆć™ć‚‹

2020幓8ęœˆć«ćć‚Œć¾ć§åˆ¶é™ć®åŽ³ć—ć‹ć£ćŸTwitter恮APIćŒå‰²ćØē°”å˜ć«ē”³č«‹ć—ć¦åˆ©ē”Øć§ćć‚‹ć‚ˆć†ć«ćŖć£ćŸć®ć§ć€é…ć¾ććŖ恌悉Google Apps Script恋悉恓恮Twitter API v2悒ä½æć£ć¦ćƒ„ć‚¤ćƒ¼ćƒˆć‚’ć—ć¦ćæ恟怂

恗恋恗态他恮REST APIćØē•°ćŖ悊态OAuth2.0čŖčØ¼ć§ćÆćŖćå¤ć„OAuth1.0čŖčØ¼ć®ć¾ć¾ćŖć®ć§ć€ć”ć‚‡ć£ćØć“ć‚Œć¾ć§ć®ć‚³ćƒ¼ćƒ‰ćØćÆē•°ćŖ悋ļ¼ˆē‰¹ć«ä½æē”Øć™ć‚‹ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖļ¼‰ć€‚ćØ恄恆恓ćØ恧态惜惃惈ćŖ恩恧ä½æćˆć‚‹ć‚ˆć†ć«äø‹ęŗ–å‚™ć‚’ć—ć¦ćæć¾ć—ćŸć€‚

今回ä½æē”Øć™ć‚‹ć‚¹ćƒ—ćƒ¬ćƒƒćƒ‰ć‚·ćƒ¼ćƒˆē­‰

恄恤悂ä½æć£ć¦ć‚‹OAuth2.0čŖčؼē”Øćƒ©ć‚¤ćƒ–ćƒ©ćƒŖ恧ćÆćŖ恏态1.0ē”Øć®ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖ悒ä½æē”Øć—ć¾ć™ć€‚ć‚³ćƒ¼ćƒ‰ć®ę›øćę–¹ćÆę®†ć©åŒć˜ć«ćŖć‚‹ć‚ˆć†ć«åÆ„ć›ć¦ć¾ć™ć€‚ć¾ćŸć€ęœ¬ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖćÆV8ćƒ©ćƒ³ć‚æć‚¤ćƒ ć§ć‚‚ćć”ć‚“ćØå‹•ä½œć—ć¾ć™ć€‚

APIćƒŖćƒ•ć‚”ćƒ¬ćƒ³ć‚¹ć‚’ć‚ˆćč¦‹ć¦č‰²ć€…ćŖäŗ‹ć«ę“»ē”Øć—ć¾ć—ć‚‡ć†ć€‚

äŗ‹å‰ęŗ–å‚™

Twitter API v2ćÆ利ē”Øē”³č«‹ćŒåæ…č¦ć§ć™ć€‚é–¢é€£ćƒŖćƒ³ć‚Æć‚’å‚č€ƒć«ē”³č«‹ć‚’č”Œć„ć€åˆ©ē”Øć§ćć‚‹ć‚ˆć†ć«ć—ć¦ćŠćåæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚åˆ©ē”Øć§ćć‚‹ć‚ˆć†ć«ćŖć£ćŸć‚‰ć€ä»„äø‹ć®ę‰‹é †ć§GASå“ć€Twitterå“ć§ćć‚Œćžć‚Œęŗ–å‚™ć‚’č”Œć„ć¾ć™ć€‚

GASå“ć®äŗ‹å‰ęŗ–å‚™

ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖ恮čæ½åŠ 

仄äø‹ć®ę‰‹é †ć§OAuth1 for Apps Scriptćƒ©ć‚¤ćƒ–ćƒ©ćƒŖ悒čæ½åŠ ć—ć¾ć—ć‚‡ć†ć€‚

  1. ć‚¹ć‚ÆćƒŖ惗惈ć‚Øćƒ‡ć‚£ć‚æć‚’é–‹ćć¾ć™ć€‚
  2. ć‚µć‚¤ćƒ‰ćƒćƒ¼ć‚ˆć‚Šć‚ˆć‚Šć€Œćƒ©ć‚¤ćƒ–ćƒ©ćƒŖć€ć®ļ¼‹ćƒœć‚æćƒ³ć‚’ć‚ÆćƒŖ惃ć‚Æ
  3. ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖ悒čæ½åŠ ę¬„ć«ć€Œ1CXDCY5sqT9ph64fFwSzVtXnbjpSfWdRymafDrtIZ7Z_hwysTY7IIhi7s怍悒čæ½åŠ ć—ć¾ć™ć€‚
  4. 今回ćÆćƒćƒ¼ć‚øćƒ§ćƒ³ćÆ18悒éøꊞ恗恦ćæć¾ć™ć€‚
  5. äæå­˜ćƒœć‚æćƒ³ć‚’ęŠ¼ć—ć¦å®Œäŗ†

恓悌恧态OAuth1.0čŖčØ¼ć«ć¾ć¤ć‚ć‚‹ę§˜ć€…ćŖé–¢ę•°ć‚’ę‰‹č»½ć«åˆ©ē”Øć§ćć‚‹ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚

図ļ¼šćƒ©ć‚¤ćƒ–ćƒ©ćƒŖ悒čæ½åŠ ć—ćŸę§˜å­

ć‚³ćƒ¼ćƒ«ćƒćƒƒć‚ÆURLć‚’å–å¾—ć™ć‚‹

ć‚³ćƒ¼ćƒ«ćƒćƒƒć‚ÆURLćØćÆ态čŖčØ¼ć‚’å®Œäŗ†ć—Access Tokenć‚’å–å¾—ć—ćŸć‚‰ęˆ»ć‚‹ć¹ćURLć‚’ęŒ‡å®šć™ć‚‹ć‚‚ć®ć§ć™ć€‚ć“ć‚ŒćÆć€ć‚¹ć‚ÆćƒŖ惗惈ID悒悂ćØć«ä½œć‚‰ć‚Œć¦ć„ć‚‹ć®ć§ć€ć‚¹ć‚ÆćƒŖ惗惈IDć‚’å–å¾—ć—ć¦ēµ„ćæē«‹ć¦ć¾ć™ć€‚

  1. ć‚¹ć‚ÆćƒŖ惗惈ć‚Øćƒ‡ć‚£ć‚æć®ć‚µć‚¤ćƒ‰ćƒćƒ¼ć‚ˆć‚Šć€Œćƒ—ćƒ­ć‚ø悧ć‚Æ惈恮čØ­å®šć€ć‚’é–‹ć
  2. ęƒ…å ±ć®äø­ć«ć‚ć‚‹ć€Œć‚¹ć‚ÆćƒŖ惗惈IDć€ć‚’ęŽ§ćˆć¦ćŠćć€‚
  3. https://script.google.com/macros/d/ć‚¹ć‚ÆćƒŖ惗惈ID/usercallback ćØ恗恦ēµ„ćæē«‹ć¦ć‚‹ć€‚ć“ć‚ŒćŒć‚³ćƒ¼ćƒ«ćƒćƒƒć‚ÆURLćØćŖ悋怂

図ļ¼šć‚¹ć‚ÆćƒŖ惗惈IDćÆćƒ•ć‚”ć‚¤ćƒ«ęÆŽć«ē•°ćŖ悋恮恧恙怂

Twitterå“ć®äŗ‹å‰ęŗ–å‚™

ć‚¢ćƒ—ćƒŖć®ä½œęˆ

Twitterå“ć§ćÆć‚¢ćƒ—ćƒŖć®ćƒ—ćƒ­ć‚ø悧ć‚Æćƒˆć‚’ä½œęˆć™ć‚‹ćØå…±ć«ć€API KeyćØSecretć‚’å–å¾—ć™ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚ä»„äø‹ć®ę‰‹é †ć§ä½œęˆć—ć¾ć—ć‚‡ć†ć€‚

  1. Twitter Developers恮Dashboardć«ć‚¢ć‚Æć‚»ć‚¹ć™ć‚‹
  2. äø‹ć®ć»ć†ć«ć‚ć‚‹ć€ŒCreate App怍悒ć‚ÆćƒŖ惃ć‚Æ恙悋
  3. AppNameć‚’ęŒ‡å®šć—ć¾ć™ć€‚ä»Šå›žćÆ怌autotweet_gas怍ćØå‘½åć—ć¾ć—ćŸć€‚ć“ć‚ŒćÆå¾Œć«ć‚³ćƒ¼ćƒ‰å†…ć§åˆ©ē”Øć—ć¾ć™ć€‚åŒć˜åå‰ćÆ利ē”Øå‡ŗę„ćŖ恄恮恧态čŖ°ć‹ćŒå–ć£ć¦ć‚‹ćØä½æćˆć¾ć›ć‚“ć€‚
  4. API KeyćØSecret恌č”Øē¤ŗć•ć‚Œć¦ć‚‹ć®ć§ć€ć‚³ćƒ”ćƒ¼ć—ć¦ćŠćć¾ć™ć€‚
  5. App Settings悒ć‚ÆćƒŖ惃ć‚Æ恙悋
  6. App Permissions恮Edit惜ć‚æćƒ³ć‚’ć‚ÆćƒŖ惃ć‚Æ
  7. Read and Writeć«å¤‰ę›“ć—ć¦ć€Save悒ć‚ÆćƒŖ惃ć‚Æ恙悋
  8. Authentication Settings恮Edit惜ć‚æćƒ³ć‚’ć‚ÆćƒŖ惃ć‚Æ恙悋
  9. Enable 3-legged OAuthć®ć‚¹ć‚¤ćƒƒćƒć‚’ć‚Ŗćƒ³ć«ć™ć‚‹
  10. Callback URLsć«å‰čæ°ć®GASå“ć®ć‚³ćƒ¼ćƒ«ćƒćƒƒć‚ÆURLć‚’å…„ć‚Œć‚‹
  11. Website URLćÆé©å½“ć«å…„ć‚Œć¦ć€Save悒ć‚ÆćƒŖ惃ć‚Æ恙悋

ę³Øꄏē‚¹ćØć—ć¦ć€ęœ€åˆć®1個ē›®ćÆstandardć‚¢ćƒ—ćƒŖćØć—ć¦ä½œć‚Œć¾ć™ćŒć€2個ē›®ä»„降ćÆstand aloneć‚¢ćƒ—ćƒŖćØćŖ悊态恓恔悉恧ćÆGAS恋悉ćÆćƒ„ć‚¤ćƒ¼ćƒˆćÆå‡ŗę„ć¾ć›ć‚“ļ¼ˆ403ć‚Øćƒ©ćƒ¼ć«ćŖć‚Šć¾ć™ļ¼‰

図ļ¼šć“恓恮čØ­å®šć®å¤‰ę›“ćŒé‡č¦ć§ć™

利ē”Ø制限

Twitter API v2恮Quota悒čŖæć¹ć¦č¦‹ć‚‹ćØ态仄äø‹ć®ć‚ˆć†ćŖåˆ¶é™ćŒć‚ć‚Šć¾ć™ć€‚

  • ćƒ„ć‚¤ćƒ¼ćƒˆćÆ15åˆ†ć€1ć‚¢ćƒ—ćƒŖå½“ćŸć‚Š300件ļ¼ˆćƒ¦ćƒ¼ć‚¶å˜ä½ć ćØ900ä»¶ć¾ć§ļ¼‰
  • 恄恄恭ćÆ态24ę™‚é–“å½“ćŸć‚Š1000ćƒŖć‚Æć‚Øć‚¹ćƒˆć¾ć§
  • ćƒ„ć‚¤ćƒ¼ćƒˆć®å–å¾—ćÆ1ćƒŖć‚Æć‚Øć‚¹ćƒˆ100ä»¶ć¾ć§ļ¼ˆ100ä»¶ć‚’č¶…ćˆć‚‹éƒØ分ćÆ态next tokenć§ć®å–å¾—ćŒåæ…要ļ¼‰

他恫悂ē“°ć‹ćŖ項ē›®ć”ćØ恫ćƒŖćƒŸćƒƒćƒˆćŒęŽ›ć‘ć‚‰ć‚Œć¦ć„ć‚‹ć®ć§ć€åˆ©ē”Øć™ć‚‹å “åˆć«ćÆꄏ識恙悋åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚ē‰¹ć«åŒć˜ć‚¢ćƒ—ćƒŖć‚’č¤‡ę•°ć§å…±ęœ‰ć™ć‚‹å “åˆć€ć‚ć£ćØ恄恆間恫ćƒŖćƒŸćƒƒćƒˆć«é”ć—ć¦ć—ć¾ć†ć®ć§č¦ę³Øꄏ怂åæœē­”ćƒ˜ćƒƒćƒ€ćƒ¼ć«ćć®å†…å®¹ćŒx-rate-limitćØć—ć¦å«ć¾ć‚Œć¦ć„ć‚‹ć®ć§ć€ć‚Øćƒ©ćƒ¼å‡¦ē†ć‚’åŠ ćˆćŸć„å “åˆć«ćÆč€ƒę…®ć™ć‚‹ćØč‰Æ恄恧恗悇恆怂超過恙悋ćØ429ć‚Øćƒ©ćƒ¼ļ¼ˆToo Many Requestļ¼‰ćŒčæ”ć£ć¦ćć¾ć™ć€‚

ć¾ćŸć€API KeyćÆPermissionć‚’å¤‰ę›“ć™ć‚‹ćØä½æ恈ćŖ恏ćŖć‚‹ć®ć§ć€å†åŗ¦ē”Ÿęˆć™ć‚‹åæ…č¦ę€§ćŒć‚ć‚Šć¾ć™ć€‚

åŒć˜ć‚ˆć†ćŖć‚­ćƒ¼ćƒÆćƒ¼ćƒ‰ć§ć®ę¤œē“¢ć®å “åˆć€ćƒŖć‚¢ćƒ«ć‚æ悤惠恧ćŖć‘ć‚Œć°ć‚¹ćƒ—ćƒ¬ćƒƒćƒ‰ć‚·ćƒ¼ćƒˆć«ć‚­ćƒ£ćƒƒć‚·ćƒ„ć—ć¦ćŠć„ć¦ć€ćć‚Œć‚’čæ”ć™ć‚ˆć†ć«ć—ć¦ćŠććØ态ćƒŖć‚Æć‚Øć‚¹ćƒˆę•°ć‚’ęø›ć‚‰ć™äŗ‹ćŒåÆčƒ½ļ¼ˆć‚­ćƒ£ćƒƒć‚·ćƒ„ćÆ惈ćƒŖć‚¬ćƒ¼ä½æē”Ø恧1Ꙃ間恔ćØ恫ļ¼‘回取得ćŖć©ć«ć—ć¦ćŠććØč‰Æ恄恧恗悇恆ļ¼‰ć€‚ć¾ćŸć€é€£ē¶šć—ć¦å¤§é‡ć®ćƒ„ć‚¤ćƒ¼ćƒˆć‚’å–å¾—ć™ć‚‹ć‚ˆć†ćŖć‚±ćƒ¼ć‚¹ć§ćÆ态ćƒŖćƒŸćƒƒćƒˆć«ęŠµč§¦ć—ćŖć„ć‚ˆć†ć«ć€Utilities.sleepć§ć‚¹ćƒŖćƒ¼ćƒ—å‡¦ē†ć‚’å…„ć‚Œć‚‹ć¹ćć§ć—ć‚‡ć†ć€‚

čŖčØ¼ć‚’č”Œć†å‡¦ē†ć‚’ä½œęˆć™ć‚‹

ć“ć“ć¾ć§ć§äŗ‹å‰ęŗ–å‚™ćŒå®Œäŗ†ć—态恂ćØćÆčŖčØ¼ć‚’å®Ÿč”Œć—ć¦Access Tokenć‚’å–å¾—ć™ć‚Œć°ćƒ„ć‚¤ćƒ¼ćƒˆć®å®Ÿč”Œęŗ–å‚™ćÆć™ć¹ć¦å®Œäŗ†ć«ćŖć‚Šć¾ć™ć€‚

GASå“ć‚³ćƒ¼ćƒ‰

  • å–å¾—ć—ćŸAPI Key态API SecretćŠć‚ˆć³AppNameć‚’ćć‚Œćžć‚Œć‚³ćƒ¼ćƒ‰å†…ć«čؘčæ°ć—ć¾ć™ć€‚
  • 今回利ē”Ø恙悋Twitter API恮ć‚Øćƒ³ćƒ‰ćƒć‚¤ćƒ³ćƒˆćÆhttps://api.twitter.com/1.1/statuses/update.jsonćØćŖć‚Šć¾ć™ć€‚ćŖćœć‹ć€ćƒ„ć‚¤ćƒ¼ćƒˆć™ć‚‹APIćÆ1.1ć®ć¾ć¾ć«ćŖć£ć¦ć„ć‚‹ć€‚
  • startoauthć‚’å®Ÿč”Œć—ć¦čŖčØ¼ć‚’å®Ÿč”Œć™ć‚Œć°ć€ć‚¹ć‚ÆćƒŖćƒ—ćƒˆćƒ—ćƒ­ćƒ‘ćƒ†ć‚£ć«Access TokenćŒę ¼ē“ć•ć‚Œć¾ć™ć€‚
  • čŖčØ¼ę™‚ć«ę¬”é …ć®Template.htmlćŒå‘¼ć³å‡ŗ恕悌态čŖčؼ完äŗ†ć™ć‚‹ćØCallback URLć«ęŒ‡å®šć—ćŸURLć«ć‚¢ć‚Æć‚»ć‚¹ć•ć‚Œć¦ć€authCallBackćŒå®Ÿč”Œć•ć‚Œć¾ć™ć€‚

HTMLå“ć‚³ćƒ¼ćƒ‰

template.htmlćØć„ć†ćƒ€ć‚¤ć‚¢ćƒ­ć‚°ē”Øć®ćƒ•ć‚”ć‚¤ćƒ«ć‚’ē”Øę„ć—ć¾ć™ć€‚ć“ć“ć§ć‚¢ć‚Æć‚»ć‚¹ę‰æčŖć‚’å®Ÿč”Œć—ć€ćƒ­ć‚°ć‚¤ćƒ³ć‚’ć™ć‚‹ćØć€ć‚¢ć‚Æć‚»ć‚¹ćƒˆćƒ¼ć‚Æćƒ³ćć®ä»–ćŒå–å¾—åÆčƒ½ć«ćŖć‚Šć¾ć™ć€‚

  • å®Ÿéš›ć«ć“ć‚Œć‚‰ć®ć‚³ćƒ¼ćƒ‰ć§ć€startoauthć‚’å®Ÿč”Œć™ć‚‹ćØć€ć‚¹ćƒ—ćƒ¬ćƒƒćƒ‰ć‚·ćƒ¼ćƒˆäøŠć§čŖčؼē”Øć®ćƒ€ć‚¤ć‚¢ćƒ­ć‚°ćŒå‡ŗć¾ć™ć€‚
  • čŖčØ¼ć§twitterć«ćƒ­ć‚°ć‚¤ćƒ³ć—ć¾ć™
  • å–å¾—ć—ćŸAccess Token恻恋ćÆć‚¹ć‚ÆćƒŖćƒ—ćƒˆćƒ—ćƒ­ćƒ‘ćƒ†ć‚£ć®appnamećØ恄恆項ē›®ć«ć‚¬ćƒƒćƒ„ćƒŖå€¤ćŒę ¼ē“ć•ć‚Œć¾ć™ć€‚
  • reseté–¢ę•°ćÆćƒ­ć‚°ć‚¢ć‚¦ćƒˆć•ć‚Œć¦ć€å†åŗ¦čŖčØ¼ćŒć§ćć‚‹ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚

ćƒ„ć‚¤ćƒ¼ćƒˆć‚’å®Ÿč”Œć™ć‚‹

čŖčØ¼ć®å®Ÿč”Œ

ć‚¹ćƒ—ćƒ¬ćƒƒćƒ‰ć‚·ćƒ¼ćƒˆć‚’é–‹ćē›“ć—ć¦ć€ćƒ”ćƒ‹ćƒ„ćƒ¼ć‚ˆć‚Šć€ŒOAuthčŖčØ¼ć€ć‚’é–‹ććØ态怌čŖčØ¼ć®å®Ÿč”Œć€ćŒć‚ć‚‹ć®ć§ć€ć‚ÆćƒŖ惃ć‚Æć—ć¦å®Ÿč”Œć—ć¾ć™ć€‚ćƒ€ć‚¤ć‚¢ćƒ­ć‚°ćŒå‡ŗć¦ćć‚‹ć®ć§ć€å®Ÿč”Œć™ć‚‹ćØTwitterčŖčؼē”»é¢ćŒå‡ŗć¾ć™ć€‚

連ęŗć‚¢ćƒ—ćƒŖ悒čŖčØ¼ć‚’å®Ÿč”Œć™ć‚‹ćØAccess TokenćŒå–å¾—ć•ć‚Œć¦ć‚¹ć‚ÆćƒŖćƒ—ćƒˆćƒ—ćƒ­ćƒ‘ćƒ†ć‚£ć«ę ¼ē“ć•ć‚Œć€čŖčØ¼ćŒå®Œäŗ†ć—ć¾ć™ć€‚

図ļ¼ščŖčØ¼ć‚’å®Ÿč”Œć—ć¦ć‚‹ē”»é¢

å–å¾—ć—ćŸToken悒ē¢ŗčŖ

ęœ¬ć‚µćƒ³ćƒ—ćƒ«ć‚¹ćƒ—ćƒ¬ćƒƒćƒ‰ć‚·ćƒ¼ćƒˆćÆć€ć‚¹ć‚ÆćƒŖćƒ—ćƒˆćƒ—ćƒ­ćƒ‘ćƒ†ć‚£ć®äø­čŗ«ć‚’č¦‹ć‚‰ć‚Œć‚‹ć‚ˆć†ć«ć€ę©Ÿčƒ½ć‚’čæ½åŠ ęøˆćæć§ć™ć€‚ćƒ”ćƒ‹ćƒ„ćƒ¼ć‚ˆć‚Šć€ŒOAuthčŖčØ¼ć€ć‚’é–‹ććØć€ć€Œć‚¹ć‚ÆćƒŖćƒ—ćƒˆćƒ—ćƒ­ćƒ‘ćƒ†ć‚£ć€ćŒć‚ć‚‹ć®ć§ć€é–‹ćć“ćØ恧态čŖčؼēµęžœć®TokenćŖ恩悒ē¢ŗčŖå‡ŗę„ć¾ć™ć€‚

図ļ¼šē„”äŗ‹å–å¾—å‡ŗę„ć¦ć‚‹ć®ć‚’ē¢ŗčŖć™ć‚‹

ćƒ„ć‚¤ćƒ¼ćƒˆć®å®Ÿč”Œ

åŒć˜ćć€ćƒ”ćƒ‹ćƒ„ćƒ¼ć‚ˆć‚Šć€ŒOAuthčŖčØ¼ć€ć‚’é–‹ććØć€ć€Œćƒ†ć‚¹ćƒˆćƒ„ć‚¤ćƒ¼ćƒˆć€ćŒć‚ć‚‹ć®ć§ć€é–‹ććØ仄äø‹ć®GASć®ć‚³ćƒ¼ćƒ‰ć‚’å®Ÿč”Œć—ć€GASå“ć‹ć‚‰ćƒ„ć‚¤ćƒ¼ćƒˆć‚’å®Ÿč”Œć™ć‚‹ć“ćØ恌åÆčƒ½ć«ćŖć‚Šć¾ć™ć€‚ć“ć‚Œć‚’ę”¹é€ ć—ć¦ć€ä¾‹ćˆć°ć‚¹ćƒ—ćƒ¬ćƒƒćƒ‰ć‚·ćƒ¼ćƒˆć«åˆ—ęŒ™ć—ćŸćƒ‡ćƒ¼ć‚æ悒惈ćƒŖć‚¬ćƒ¼ćŖ恩悒ä½æć£ć¦č‡Ŗå‹•ćƒ„ć‚¤ćƒ¼ćƒˆć—ć¦ćæ恟悊恙悋Botć‚’ä½œć‚‹ć€ä½•ć‹ć®å‡¦ē†ć‚’č”Œć£ćŸēµęžœć‚’态GASć§å—ć‘ä»˜ć‘ć¦ć€ćƒ†ć‚¹ćƒˆćƒ„ć‚¤ćƒ¼ćƒˆć‚’å®Ÿč”Œć™ć‚‹ć‚ˆć†ć«ä»•č¾¼ć‚“ć ć‚Šć§ć€č‰²ć€…ćØä½æ恄ćæć”ćŒć‚ć‚‹ćØę€ć„ć¾ć™ć€‚

  • ćƒŖć‚Æć‚Øć‚¹ćƒˆćÆPOSTć§č”Œć„ć€service.fetchćØć„ć†å½¢ć§ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖć®åŠ›ć‚’å€Ÿć‚Šć¦ćƒŖć‚Æć‚Øć‚¹ćƒˆć‚’å®Ÿč”Œć—ć¾ć™ć€‚
  • @ć‚¢ć‚«ć‚¦ćƒ³ćƒˆåć‚’statusć«å…„ć‚Œć‚Œć°ć€ćƒŖćƒ—ć«ćŖć‚Šć¾ć™ć€‚
  • ć“ć®ä»–ćƒ„ć‚¤ćƒ¼ćƒˆć ć‘ć§ćŖććƒ‡ćƒ¼ć‚æć®å–å¾—ćŖć©ć®ćƒ”ć‚½ćƒƒćƒ‰ć‚‚ćŸćć•ć‚“ē”Øę„ć•ć‚Œć¦ć‚‹ć®ć§ć€ć“ć®ä»•ēµ„ćŒć‚ć‚Œć°ć€Twitterć‚’č‰²ć€…ćØę“ä½œć™ć‚‹ć“ćØ恌åÆčƒ½ć«ćŖ悋ćØę€ć„ć¾ć™ć€‚

図ļ¼šGASć‹ć‚‰å®Ÿč”Œć—ćŸēµęžœ

ćƒ„ć‚¤ćƒ¼ćƒˆć‚’å–å¾—ć—ć¦ćæ悋

Twitterć‚’ć‚­ćƒ¼ćƒÆćƒ¼ćƒ‰ę¤œē“¢ć—恦ēµęžœć‚’ć‚¹ćƒ—ćƒ¬ćƒƒćƒ‰ć‚·ćƒ¼ćƒˆć«ę›ø恍å‡ŗ恗恦ćæ悈恆ćØę€ć„ć¾ć™ć€‚ć‚Æć‚ØćƒŖć®ä½œć‚Šę–¹ć«ć¤ć„ć¦ćÆ态Building queries for Search Tweets恫čØ˜č¼‰ćŒć‚ć‚Šć¾ć™ć€‚ć‚Øćƒ³ćƒ‰ćƒć‚¤ćƒ³ćƒˆćÆ态https://api.twitter.com/2/tweets/search/recent?query=ćØćŖć‚Šć€ć“ć‚Œć«ćƒÆćƒ¼ćƒ‰ć‚„ć‚Ŗćƒ—ć‚·ćƒ§ćƒ³ć‚’ć¤ćŖć’ć¦å®Ÿč”Œć—ć¾ć™ć€‚ćƒ¦ćƒ¼ć‚¶åę¤œē“¢ć®å “合ćÆ@ćƒžćƒ¼ć‚ÆćÆć¤ć‘ć¾ć›ć‚“ļ¼ˆć“恔悉ćÆAPIć®ćƒćƒ¼ć‚øćƒ§ćƒ³ćŒ2ćØćŖć£ć¦ć‚‹ļ¼‰

今回ćÆ怌Google Apps Script怍恧ꤜē“¢ć—ć¦ę—„ęœ¬ć§ć®ćƒ„ć‚¤ćƒ¼ćƒˆć‚’20ä»¶ćšć¤åˆč؈40ä»¶å–å¾—ć—ć¦ćæć¾ć™ć€‚ć¾ćŸć€ę¤œē“¢ć‚Ŗćƒ—ć‚·ćƒ§ćƒ³ć§ęŒ‡å®šć™ć‚‹å–å¾—ć™ć‚‹ćƒ‡ćƒ¼ć‚æć®ęŒ‡å®šć§ć‚ć‚‹tweet.fieldsć‚„ćƒ¬ć‚¹ćƒćƒ³ć‚¹ć¤ć„ć¦ćÆ恓恔悉恧ē¢ŗčŖå‡ŗę„ć¾ć™ć€‚

  • optionć«ć¦ćƒ„ć‚¤ćƒ¼ćƒˆå†…å®¹ć®ć†ć”å–å¾—ć™ć‚‹é …ē›®ć‚’tweet.fieldsć§ęŒ‡å®šć€‚ć¾ćŸmax_result恧1å›žå½“ćŸć‚Šć®å–å¾—ćƒ„ć‚¤ćƒ¼ćƒˆę•°ć‚’ęŒ‡å®š
  • ć‚­ćƒ¼ćƒÆćƒ¼ćƒ‰ćÆURL Encode恌åæ…要ćŖ恮恧encodeURIComponentć§åŠ å·„ć€‚
  • ć‚­ćƒ¼ćƒÆćƒ¼ćƒ‰ć«ę–¼ć„ć¦ć€ćƒ€ćƒ–ćƒ«ć‚³ćƒ¼ćƒ†ćƒ¼ć‚·ćƒ§ćƒ³ć§ę‹¬ć£ć¦ēµžć‚Šč¾¼ćæ恌åæ…要ćŖꙂćÆ态惐惃ć‚Æć‚¹ćƒ©ćƒƒć‚·ćƒ„ć§ćƒ€ćƒ–ćƒ«ć‚³ćƒ¼ćƒ†ćƒ¼ć‚·ćƒ§ćƒ³ć‚’ć‚Øć‚¹ć‚±ćƒ¼ćƒ—ć™ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚
  • ć¾ćŸć€ä»Šå›žćÆćƒŖćƒ„ć‚¤ćƒ¼ćƒˆćÆå–å¾—ć—ćŖ恄恮恧态-is:retweetć§ęŽ’é™¤ć—ć€ę—„ęœ¬čŖžć ć‘ć‚’å–å¾—ć™ć‚‹ć®ć§ć€lang:jać‚’ęŒ‡å®šć—ć¦ć„ć¾ć™ć€‚
  • å–å¾—ćƒ‡ćƒ¼ć‚æć‚’é…åˆ—ć«åŠ ćˆć¦ęœ€å¾Œć«äø€ē™ŗć§ć‚¹ćƒ—ćƒ¬ćƒƒćƒ‰ć‚·ćƒ¼ćƒˆć«ę›øč¾¼ćæć‚’ć—ć¦ć„ć¾ć™ć€‚
  • ć¾ćŸć€ä»Šå›žćÆ20件悒2å›žå®Ÿč”Œć—ć¦ć€åˆč؈40ä»¶ć®ćƒ„ć‚¤ćƒ¼ćƒˆć‚’å–å¾—ć™ć‚‹ć®ć§ć€2回ē›®ä»„降恧ćÆoption恫next_tokenć‚’åŠ ćˆć‚‹åæ…č¦ćŒć‚ć‚‹ć®ć§ć€1回ē›®ć®ćƒ¬ć‚¹ćƒćƒ³ć‚¹ćƒ‡ćƒ¼ć‚æć«å…„ć£ć¦ć‚‹next_token悒option恫čæ½čØ˜ć•ć›ć¦ćƒŖć‚Æć‚Øć‚¹ćƒˆć—ć¦ć„ć¾ć™ļ¼ˆć“ć‚Œć§ę¬”恮20ä»¶ćŒå–ć‚Œć‚‹ļ¼‰
  • ćƒŖćƒŸćƒƒćƒˆć«ć‹ć‹ć‚‰ćŖć„ć‚ˆć†ć«ć€2回ē›®ć®ćƒŖć‚Æć‚Øć‚¹ćƒˆå‰ć«Utilities.sleep恧10ē§’é–“ć‚¹ćƒŖćƒ¼ćƒ—ć‚’å…„ć‚Œć¦ć„ć¾ć™ć€‚

図ļ¼šē„”äŗ‹ć«ćƒ„ć‚¤ćƒ¼ćƒˆć‚’å–å¾—ć§ććŸ

関連ćƒŖćƒ³ć‚Æ

å…±ęœ‰ć—ć¦ćæ悋ļ¼š

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

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

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