雑学

難しいことは分からないがYahooメール20万件をpythonで自動削除した話

更新日:

ずっと後回しにしてきた問題が、今日ついに爆発しました。

ヤフーメールの容量いっぱい問題です。メール件数は20万件、容量は上限の10GBいっぱいで、「新規のメールを受信できません」というアラートが出ていました。(スクショはちょっと削除してから撮ったものなので、18万4千件になってます)

いちおうヤフーメールには、一括削除という機能があるのですが、他の方のブログ等を見ると、どうもメール件数が一定以上だと一括削除ができないようです。(5万件くらいだと可能という情報がありました。)

仕方なく手作業でやり始めましたが、1回の操作で削除できるメールは200件まで。1回の操作に10秒かかるとすると、20万件削除するのにかかる時間は、10秒×1,000回で10,000秒=約3時間。

『・・・・これはやってられん・・・』ということで、何らかの方法で、マウスとキーボード操作を自動化してパソコンに頑張って削除してもらうことを思いつきました。(RPAというんでしょうかね?)

ググってみると、Pythonを使ってできるような記事を見つけたので、さっそく試してみようと思います。

以下に、やり方を列挙しますが、なにぶん素人なので、『よく分からないが』という接頭語や『たぶん』という言い訳が頻発すると思います。その点ご容赦ください。

使ったツール

使ったツールは、主にPythonとVS code、ほんの少しだけコマンドプロンプトも使いました。

パソコンはWindows10です。

書いたコード

とりあえず、書いたコードを貼っておきます。実際、苦労したのは、コードを書き始める前の環境構築のところでしたが、そちらについては後述します。

以下に、それぞれの意味を詳しく記載します。

import  pyautogui

こちらは、pyautoguiをインポートするコマンドです。インポートというのが何かはよく分かりませんが、pyautoguiをインポートすることで、このあと出てくる、moveTo、click、keyDown、press、keyUpというコマンドを使えるようになります。

私は、pyautoguiをインポートする前段階で、エラーが出てだいぶ手こずりました。その辺りの話しは後ろの方に書いておきます。

import time

こちらは、timeをインポートするコマンドです。timeをインポートすると、このあと出てくる、sleepを使えるようになります。

 

以上が、自動化作業の準備段階です。ここからが、マウスやキーボード操作を自動化する具体的なコードの説明です。

pyautogui.moveTo(1300,15)

こちらは、マウスのカーソル指定の座標まで移動させるコマンドです。この例でいうとモニターの横方向を1300という数字で指定し、縦方向を15という数字で指定しています。

ちなみに、どの数字がどの位置なのかというのはよく分かりません。私は、少しずつ数字を変えて試しながら、最適な数字を決めました。

pyautogui.click()

こちらは、マウスクリックをするためのコマンドです。

 

以上、pyautogui.Moveto(1300,15)とpyautogui.click()の2つのコマンドで私がやりたかったのは、『ブラウザで立ち上げている複数のタブの中から、下のスクショ画面の、ヤフーメールのタブまでカーソルを移動させてクリックする』というものです。

i =0
while i<2:
i += 1

この文は、コマンドをループさせるための記述です。これを書くことで、while i<2とi+=1の間に書かれている12行分のコマンドを繰り返し実行します。

なので、この3行は、ヤフーメールを削除することに対する具体的な操作には関係ないです。

繰り返す回数を増やしたい時は、while i<2の「2」の部分を100とか200とかにすればOKです。

意味としては、『i=0からはじめて、iが2より小さいときは、次の命令を繰り返す』という感じになります。

pyautogui.moveTo(1460,320)
pyautogui.click()

これは、先ほど書いたのと基本的には、同じです。マウスのカーソルをある位置まで動かして、クリックさせます。

この部分は、下のスクショの赤丸部分をクリックして、メールボックスの1番古いものを指定するために、書きました。

time.sleep(1)

これは、『1秒待つ』というコマンドです。カッコの中の数字を変えると、待つ時間を変えられます。

なぜ、1秒待つようにしたかというと・・・・

基本的に、プログラムの各動作は、一瞬で実行されます。それに対して、ブラウザをクリックした後の、読み込み時間はけっこう長いです。なので、1動作ごとに待ち時間を入れてやらないと、ブラウザの動作が追い付かず、意図した動作ができなくなります。

pyautogui.keyDown('ctrl')
pyautogui.press('a')
pyautogui.keyUp('ctrl')

これは、マウス操作でなく、キーボードの操作のためのコマンドです。

pyautogui.keyDown()はキーボードを押しっぱなしにするためのコマンドです。pyautogui.keyUp()が命令されるまで、押しっぱなしになります。

ここでやりたかったのは、Ctrl + Aで『すべて選択』することです。

このコマンドで、メールボックスに表示されているメールが全選択されます。

pyautogui.moveTo(580,320)
pyautogui.click()

ふたたび、moveToとclickです。もう説明不要と思います。

ここでやりたかったのは、スクショの赤丸で囲った、削除ボタンのクリックです。

pyautogui.press('left')
time.sleep(0.5)
pyautogui.press('enter')
time.sleep(15)

最後の4行も、すでに出てきたものなので、コマンドの説明は不要ですね。

やりたかったのは、メール削除の最終確認処理です。

確認画面では、最初、キャンセルボタンが選択されているので、キーボードの「←」を押して、OKボタンが選択されるようにします。その後、enterを入力することで、削除画面のOKボタンがクリックされることになり、選択したメールが削除されます。

これで、pythonコードの説明は終わりです。

他に、私がつまずいたところや、初期の環境構築についても書きたかったんですが、この記事を書きはじめてしまったため、肝心のメール削除作業が進んでません。まだ13万件残ってます。

自動化って手間を無くすことはできるんですけど、作業時間自体は人力(じんりき)でやるのと変わらないか、むしろ長くかかるんですよね。(待ち時間を長めに設定する必要があったりするので)

ほかに書いておきたかった、「pyautoguiのinstallは、VS codeじゃなくて、コマンドプロンプトでやる」とか、「while文でループしたい中身はインデントを入れないとダメ」とかは後日追記しておきたいと思います。

以下、後日追記分です。

環境構築について

Pythonを使う準備

Pythonを入手する方法は、いくつかあるようですが、私は1番簡単で、色々と都合が良いらしい、以下の方法を使いました。

Microsoft Storeでpythonを検索して、「入手」ボタンをクリックするだけです。3.7、3.8、3.9とか出てきますが、私は3.9を入手しました。

 

Microsoft Storeにたどり着けない場合は、パソコン画面左下の検索窓にmicrosoft storeと入力すると出てくるはずです。

pyautoguiのインストール

私が今回1番つまづいたのはココでした。

ネットで調べて、今回最初にやらないといけないのが、pyautoguiのインストールということが分かりました。なので、Pythonを起動して、ネット記事に書いてあるとおり、pip install pyautoguiというコマンドを入力したんですが、SyntaxError: invalid syntaxというのが表示され、いっこうにインストールされません。

 

↓こんな感じのエラーが出ます。

こちらの対処方法は、Pythonの画面からでなく、コマンドプロンプトで、pip install pyautoguiを入力すれば良かっただけです。

素人はこういうところで、つまづくんですよね・・・

コードの中身でつまづいたところ

最後に、コードの中身で1点だけつまづいたところがあるので、書いておきます。

whileの使い方

最初、私はwhile文を以下のように書いていました。すると、「IndentationError」というのが表示されて、プログラムが動いてくれませんでした。

正しいものと比べてなにが違うかというと、

赤い四角で囲った、空白部分です。Pythonではこの空白部分で、whileでループさせたい中身を決めているそうです。

コードを上から順番に書いていれば、whileの行でEnterを押すと次の文は勝手に空白が入れられるんですが、私の場合、whileを後から追加したので、手作業で空白も追加する必要がありました。

ad



人気記事

1

中小企業診断士の模試情報です。スタディング、LEC、TAC、クレアール、大原の5社の模試情報をまとめています。

2

部屋に有線LANを引きたいけど、LANの出口が無い。ルーターから距離も遠いからLANケーブルを這い回すのも無理。結果、仕方なく不安定なWifiを使ってるなんてことありませんか? 少々お金はかかりますが ...

3

私は2018年、診断士ゼミナールの受講+独学で半年間ほどの勉強をして中小企業診断士試験に合格することができました。診断士ゼミナールの受講で合格できた、とも言えますが、追加の独学もなければ合格できなかったでしょう。ここでは診断士ゼミナールの良かった点、悪かった点を『忖度無し』でぶっちゃけて紹介したいと思います。

4

中小企業診断士試験は一般に難関試験に分類され、社会保険労務士などとよく比較されます。ここではなぜ中小企業診断士試験の合格が難しいのかをいくつかの点から考えていきたいと思います。 試験問題の難易度はどれ ...

5

ここでは、安価に受講できる中小企業診断士試験対策通信講座の代表格であるスタディング(旧:通勤講座)について詳しく紹介しています。
~この記事はこんな人向けに書きました~■中小企業診断士試験の対策講座について少し知っている。その中でスタディングに興味があるので詳しく知りたい。■中小企業診断士試験の対策講座を受講しようと考えているが、なるべく安くて信頼できるものが良い。

-雑学

Copyright© 通信講座+独学で【中小企業診断士試験】に半年間(350時間)でストレート合格した勉強法 , 2024 All Rights Reserved Powered by STINGER.