かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

TwiPla から参加者のリストを CSV でダウンロードするやつ作った

Twitter アカウントでイベントとか合同の募集できる TwiPla で参加者が多いと連絡とか進捗管理など大変になるので参加者のリストをサクッとCSV でダウンロードできると便利だよな〜と思い昔スクリプトを描いていたのでこちらにもメモとして残しておきます

TwiPla のイベントページから参加者・興味あり・不参加ユーザーのリストを CSV としてダウンロードできるスクリプト

⚠ TwiPla / ブラウザの仕様が変わると動作しなくなる可能性があります

gist.github.com

動作確認

使い方

  1. TwiPla のイベントページで dev tool を開きコンソールのタブを開く
  2. このスクリプトまたは下記のminifiされたコードをコピーしてコンソールのタブに貼り付けてエンター
const listElement=".member_list",userElement="a.namelist",getDate=()=>{let e=new Date;return`${e.getFullYear()}-${e.getMonth()}-${e.getDay()}-${e.getTime()}`},getUserData=e=>{let t=e.getAttribute("title");return[e.getAttribute("n"),t,`https://twitter.com/${t.replace("@","")}`]},getUsersList=()=>[...document.querySelectorAll(".member_list")].reduce((e,t)=>[...e,[t.firstChild?.data],...[...t.querySelectorAll("a.namelist")].map(getUserData),],[]),downloadCSV=e=>{let t=new Blob([e.map(e=>e.join(",")).join("\n")],{type:"text/csv"}),l=`${document.title}_${getDate()}.csv`,r=(window.URL||window.webkitURL).createObjectURL(t),a=document.createElement("a");a.download=l,a.href=r,document.body.appendChild(a),a.click(),document.body.removeChild(a)};(()=>{let e=["userName","twitterId","twitterLink"];downloadCSV([e,...getUsersList(),])})();
  1. CSV ファイルがダウンロードされる

ちょっとだけポイントの説明

自動で CSV をダウンロードさせるために Blob でファイルオブジェクトを作成して、createElement で作成した a タグの href に指定、ダウンロードされるファイル名は .download 属性で指定する。作成した a タグを document に追加してしまって .click() を発火させることでユーザーが a タグをクリックした体でダウンロードが始まる。
スクリプトで勝手にダウンロードさせられるのでそのうちセキュリティの仕様が変わると使えなくなりそうな気もしてるけど、2022-02-22 現状はこの方法で自動ダウンロードさせることができる

おわり ₍ ᐢ. ̫ .ᐢ ₎


これからもずっと アイカツ!