日常の業務で頻繁にやり取りをしなければいけないメール管理ですが、Pythonを使うことで自動化することができます
Pythonを使ってメールの自動化を図ることができれば、そのほかの重要な業務に時間を割くことができます
大量のメールを一度に送信する必要がある場合や、特定の条件を満たしたときに自動的にメールを送信するようなシステムを作成する際に非常に便利です
ぜひ一緒にPythonでメール管理を自動化していきましょう
- Pythonの業務効率化の基本
- Pythonを使ったGmailの自動化
筆者について
2021年から本格的にPython学習を始め、今ではPythonによる収益化に成功しフリーランスエンジニアに
大学院時代には、R言語とPythonを使って統計処理を行っていたため、Pythonを使ったデータサイエンスの知識が豊富
医療データを機械学習を用いて解析したり、学会発表も行なっている
Contents
Gmail APIとPythonの組み合わせの可能性
PythonとGmail APIを組み合わせることで、メール管理の自動化を図ることができ、時間を大幅に節約することができます
メール管理を自動化することで、日々の業務をより効率的に、かつエラーの少ないものにすることが可能となります
Gmail APIとPythonを活用した自動化の概要
Gmail APIは、Googleが提供するプログラムからGmailの機能を操作するためのインターフェースです
Gmail APIを使うことで、メールの送受信、検索、ラベル付けなど、Gmailのほとんどの機能を自動化することが可能になります
手動で行うと時間がかかるか、一部の操作が困難なタスクを自動化することで、時間を節約し、作業の効率を向上させることができます
一方、Pythonはその読みやすさと強力なライブラリにより、APIとの連携を容易にします
特に、google-auth
やgoogle-auth-oauthlib
、google-auth-httplib2
、google-api-python-client
などのライブラリを使用することで、Gmail APIとの認証や通信を簡単に行うことができます
Gmail APIとPythonを活用したメール送信の自動化
Gmail APIとPythonを組み合わせることで、メールの送信を自動化することが可能です
これは、定期的なレポートの送信、特定のイベントが発生したときの通知、大量のメールを一度に送信するなど、様々なシーンで活用できます
Pythonスクリプト内でメールの本文、件名、送信先などを定義し、Gmail APIを通じてメールを送信することができます
Pythonを使うことで、手動でメールを作成・送信する手間を省き、時間を節約することが可能
また、PythonとGmail APIを活用することで、メール送信の自動化だけでなく、送信したメールの追跡や管理も自動化することができます
Gmail APIの認証について
Gmail APIを使用するためには、まずGoogleに対する認証が必要となります
この認証プロセスは、あなたがGoogleのサービスにアクセスする権限を持つことを確認するためのものです
ここからはGmail APIの認証方法について詳しく説明します
Gmail APIの認証方法
Gmail APIを使用するためには、まずGoogleに対する認証が必要となります
Gmail APIの認証は、主にOAuth 2.0というプロトコルを使用して行われます
OAuth 2.0は、ユーザーが自身のGoogleアカウントの情報を直接共有することなく、第三者のアプリケーションにGoogleのサービスへのアクセスを許可するためのものです
これにより、ユーザーのプライバシーが保護され、安全にGoogleのサービスを利用することができます
OAuth 2.0の認証プロセスは、以下のステップで構成されます
- アプリケーションがユーザーにGoogleへのログインとアクセス許可を求める
- ユーザーがログインとアクセス許可を与える
- Googleがアプリケーションに認証コードを提供する
- アプリケーションが認証コードを使用してアクセストークンを取得する
- アプリケーションがアクセストークンを使用してGmail APIにアクセスする
これらのステップを通じて、PythonからGmail APIを安全に使用するための認証を行うことができます
アプリパスワードの設定と利用
Gmail APIを使用するためには、Googleアカウントのセキュリティ設定の一部としてアプリパスワードの設定が必要となる場合があります
アプリパスワードは、2段階認証を有効にしているGoogleアカウントで、特定のアプリケーションがアカウントに安全にアクセスできるようにするためのものです
アプリパスワードは、Googleアカウントのセキュリティ設定から生成できます
生成されたアプリパスワードは、PythonスクリプトからGmail APIにアクセスする際に使用します
アプリパスワードの設定は以下の手順で行います
- Googleアカウントのセキュリティページにアクセス
- 2段階認証を有効にします(すでに有効になっている場合はこのステップをスキップ)
- 「アプリパスワード」のセクションを選択
- 新しいアプリパスワードを生成
生成したアプリパスワードは、Pythonスクリプト内でGmail APIにログインする際に使用します
このパスワードは一度しか表示されないため、安全な場所に保存しておきましょう
アプリパスワードを使用することで、PythonとGmail APIを安全に連携させることができます
OAuth2.0を用いた認証と認可
OAuth 2.0の認証と認可のプロセスは以下のようになります
- ユーザーへの認証要求:アプリケーションは、ユーザーにGoogleへのログインとアクセス許可を求めます。この時、ユーザーはアプリケーションがアクセスを求めているGoogleサービスの範囲(スコープ)を確認できます。
- 認証コードの取得:ユーザーがログインとアクセス許可を与えると、Googleはアプリケーションに認証コードを提供します。この認証コードは一時的なもので、アクセストークンを取得するために使用します。
- アクセストークンの取得:アプリケーションは認証コードと共にGoogleにリクエストを送り、アクセストークンを取得します。アクセストークンは、アプリケーションがユーザーの代わりにGoogleサービスにアクセスするための「鍵」のようなものです。
- Gmail APIへのアクセス:アプリケーションは取得したアクセストークンを使用してGmail APIにアクセスします。アクセストークンは有効期限があり、期限が切れると新たに取得する必要があります。
このOAuth 2.0を用いた認証と認可のプロセスを通じて、PythonからGmail APIを安全に使用することができます
PythonでGmail APIを操作するための準備
PythonでGmail APIを操作するためには、いくつかの準備が必要です
ここからは、PythonでGmail APIを操作するための準備手順を詳しく説明します
必要なAPIの有効化
PythonでGmail APIを使用するためには、まずGoogle Cloud Platform (GCP) でGmail APIを有効にする必要があります
GCPはGoogleが提供するクラウドサービスのプラットフォームで、Gmail APIなどのGoogleのAPIを使用するための設定を行うことができます
GCPでの準備



GCPのコンソールにログインした後、左側のナビゲーションメニューから「APIとサービス」を選択し、「ライブラリ」をクリックします

次に、検索ボックスに「Gmail API」と入力し、検索結果からGmail APIを選択します

Gmail APIのページに移動したら、「有効にする」をクリックします。
これにより、Gmail APIが現在のGCPプロジェクトで有効になります
次に、このAPIを使用するための認証情報を作成する必要があります

左側のナビゲーションバーにある「OAuth同意画面」をクリック

テスト・外部の設定のまま、下にスクロールしていきます

メールアドレスなどは自動で入力されていると思いますが、入力されていない場合には、Gmailのアドレスを入力しておきましょう

下までスクロールしたら、「保存して次へ」をクリック

Gmail APIを選択しますが、auth/gmail.modifyを選択します
もしもPythonのプログラムを実行したときにエラーが生じたら、そのほかのGmail APIにもチェックを入れましょう

Gmail APIの設定が終わったら、「認証情報」に移ります
認証情報では、「認証情報を作成」→「OAuthクライアントID」をクリック

アプリケーションの種類は「デスクトップアプリ」を選択します
名前は勝手に入力されるので、そのままでOK

OAuthクライアントが作成されたら「JSONをダウンロード」して、ダウンロードファイルをPythonのコードと同じ階層に「credentials.json」という名前で保存しておきます

次に「認証情報を作成」から「ウィザードで選択」をクリック

APIを選択で「Gmail API」を選択し、「ユーザーデータ」にチェックを入れます
これで準備は完了です
あとはプログラムを実行すると以下のようになります


テストユーザーとして登録したアカウント以外でログインしようとするとエラーになります

テストユーザーでログインすると上記のようになるので、「続行」を押せば、以下の画面になります
これでPythonからGmailを操作することができるようになります
ここまでのサンプルコードは以下のようになります
from __future__ import print_function
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']
def main():
creds = None
# The file token.pickle stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
service = build('gmail', 'v1', credentials=creds)
# Call the Gmail API
results = service.users().labels().list(userId='me').execute()
labels = results.get('labels', [])
if not labels:
print('No labels found.')
else:
print('Labels:')
for label in labels:
print(label['name'])
if __name__ == '__main__':
main()
>>>出力結果
Labels:
CHAT
SENT
INBOX
IMPORTANT
TRASH
DRAFT
SPAM
CATEGORY_FORUMS
CATEGORY_UPDATES
CATEGORY_PERSONAL
CATEGORY_PROMOTIONS
CATEGORY_SOCIAL
STARRED
UNREAD
プライベート
仕事
領収書
今回は公式サイトに記載されている、メッセージのラベルを取得しています
PythonでGmail APIを使用したメール送信
PythonとGmail APIを組み合わせることで、プログラムから直接メールを送信することが可能になります
これは、大量のメールを一度に送信する必要がある場合や、特定の条件を満たしたときに自動的にメールを送信するようなシステムを作成する際に非常に便利です
Gmail APIを用いたメール送信のコード例
PythonとGmail APIを使用してメールを送信するための基本的なサンプルコードは以下です
このコードは、認証情報を読み込み、Gmail APIクライアントを作成し、メールを作成して送信する処理を行います
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
import base64
from email.mime.text import MIMEText
from apiclient import errors
#Gmail APIのスコープを設定
SCOPES = [
"https://www.googleapis.com/auth/gmail.compose",
"https://www.googleapis.com/auth/gmail.readonly",
"https://www.googleapis.com/auth/gmail.labels",
"https://www.googleapis.com/auth/gmail.modify",
]
#メール本文の作成
def create_message(sender, to, subject, message_text):
message = MIMEText(message_text)
message['to'] = to
message['from'] = sender
message['subject'] = subject
encode_message = base64.urlsafe_b64encode(message.as_bytes())
return {'raw': encode_message.decode()}
#メール送信の実行
def send_message(service, user_id, message):
try:
message = (service.users().messages().send(userId=user_id, body=message)
.execute())
print('Message Id: %s' % message['id'])
return message
except errors.HttpError as error:
print('An error occurred: %s' % error)
#メイン処理
def main():
#アクセストークンの取得
creds = None
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server()
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
service = build('gmail', 'v1', credentials=creds)
#メール本文の作成
sender = '@gmail.com'
to = '@gmail.com'
subject = 'メール送信自動化テスト'
message_text = 'メール送信の自動化テストをしています。'
message = create_message(sender, to, subject, message_text)
# 7. Gmail APIを呼び出してメール送信
send_message(service, 'me', message)
#プログラム実行
if __name__ == '__main__':
main()
このように、PythonとGmail APIを使用すると、プログラムから直接メールを送信することが可能になります
送信先アドレスをリストとして保存しておき、for文で繰り返すことでメルマガ配信もできると思います
これは、大量のメールを一度に送信する必要がある場合や、特定の条件を満たしたときに自動的にメールを送信するようなシステムを作成する際に非常に便利です
もしもエラーになってしまった場合には、フォルダ内に保存されている「token.pickle」を削除してからもう一度実行すると、うまくいく可能性が高いです
また、サーバーを使って定期実行を設定することで、メールの自動送信も行うことができます

Gmail APIの活用例と応用
Gmail APIは、メールの送受信だけでなく、様々な応用が可能です
Pythonと組み合わせることで、これらの機能を自動化し、業務効率化やサービスの向上につなげることができます
Gmail APIを活用した業務効率化の例
Gmail APIは、業務効率化に大いに貢献するツールです
特に、メール管理が頻繁に必要なビジネスシーンでは、その効果を大いに発揮してくれます
ここからは、Gmail APIを活用した業務効率化の具体的な例をいくつか紹介します
自動的なメールフィルタリング
Gmail APIを使用すると、特定の条件に基づいてメールを自動的にフィルタリングすることが可能
例えば、特定の送信者からのメールや、特定のキーワードを含むメールを自動的に別のフォルダに移動させることができます
これにより、重要なメールを見逃すことなく、かつ、不要なメールに時間を取られることなく、効率的にメール管理を行うことができます
自動返信の設定
特定のキーワードを含むメールや、特定の時間帯に受信したメールに対して自動的に返信を設定することも可能
これは、顧客からの問い合わせに対する自動応答や、休暇中などに自動的に返信を設定する際に便利です
メールデータの分析
Gmail APIを使用すると、メールの内容を自動的に収集し、そのデータを分析することが可能
これにより、顧客からのフィードバックや市場の動向など、ビジネスに重要な情報を効率的に収集することができます。
今回紹介した例は、Gmail APIを活用することで実現可能な業務効率化の一部です
Pythonと組み合わせることで、これらの機能を自動化し、さらなる業務効率化を実現することが可能です
Pythonの学習方法
Gmail APIを扱うためには、必要最低限のPython知識が必要になります
ここからは実際にpythonの独学方法と手順について解説していきます
- 開発環境:pythonの開発環境準備をする
- 基礎理解①:pythonの基礎文法を学ぶ
- 基礎理解②pythonのライブラリ・モジュールについて学ぶ
- 応用練習:pythonでスクレイピングをしてみよう
- 実践練習:開発したいものを考えよう
(開発したいものを考える場合には、案件サイトを見るのがおすすめ) - 実践練習:実際に開発して実行しよう
step1.pythonを使える準備をする
まずはpythonを使える準備をしていきます
pythonはデータ解析を得意としており、データ解析向けのAnacondaの使用がおすすめです
私のブログでは基本的にAnacondaとspyderの使用を基本としているので、参考にする場合には、Anacondaとspyderの準備をお願いします

step2.pythonの基礎文法を学ぶ
pythonの開発環境が準備できたら、pythonの基礎文法を勉強していきます
よく例題として出されるのが「Hello World」を出力しよう
というものです
個人的には、電卓やメモ帳を作成する方が、pythonの基礎文法を学ぶのには向いているな、と思います
また、pythonで統計学を行いたい方は、以下の記事から統計学の勉強を進めていってください

step3.pythonのライブラリ・モジュールについて学ぶ
pythonではライブラリやモジュールと呼ばれるものをよく使用します
ライブラリやモジュール全てを覚える必要はありません
よく使用するものだけをマスターするだけでOKです
新しく出てきたものに関しては、リファレンスや公式ドキュメントを参考にするのが◯です
step4.pythonでスクレイピングをしてみよう
pythonの基礎文法・ライブラリ・モジュールがおおむね理解できたら、webサイトのスクレイピングをしてみましょう
スクレイピングでは、pythonの基礎文法・ライブラリ・モジュール全てを使用する他に、HTMLやCSSの基本的な理解が必要になります
わからないところを調べながら進めることで、一層理解が深まります
step5.開発したいものを考えよう
pythonでスクレイピングまで行うことができたら、pythonで開発したいものを考えていきましょう
python学習の近道は、自分自身の開発したいものを開発する、に限ります
作りたいものがない場合には、ココナラやクラウドワークスなどで、pythonを使った案件などを眺めながら、作れそうなものを作っていきましょう
step6.実際に開発して実行しよう
作りたいもの・作れそうなものが決まったら、実際に開発していきます
おそらく一発でエラーなく実行できることはないと思います
エラーで止まるのではなく、エラーが出るたびに一つずつ調べて、pythonの技術を磨いていきましょう
開発ができたら案件を受けて、さらに技術を磨いていきます
これで収益5桁は突破することができます
番外編:Macかwindowsか?
プログラミング=Mac
というイメージがあるかもしれませんが、結論はどちらでもいい、です
パソコンによって開発できるできないが変わるわけではありません
しかし、おすすめはMacです
Macがおすすめな理由
デザイン性がいい、とかではなく、Macがおすすめな理由は次のとおりです
- プログラミング系アプリの充実度
- 直感操作で操作性めちゃ上がる
- 持ち運びが楽
- 長年使用してももっさり感がない
一度Macを使用すると、windowsに戻ろうという気持ちにはなりません
最近のMacはスペックが上がってきているので、Airでも十分です

まとめ
この記事では、PythonとGmail APIを活用したメール管理の自動化について詳しく解説しました
Pythonは、データ分析から自動化、ウェブスクレイピングまで、多岐にわたる業務を効率化するためのツールとして活用できます
Pythonを学び、活用することで、業務の効率化を実現し、より価値ある時間を生み出すことが可能です
是非一緒にPythonの理解を深めていきましょう
