スポンサーリンク

【ChatGPT】Gmail内のリンク先からデータを取得するpythonコード作成にtry(1)

2023年12月16日

ChatGPTに聞いてみた。ChatGPTに聞きながらプログラミングをするのは初めてです。目的を達成できるでしょうか?やってみたいと思います。

スポンサードリンク

開発環境

Windows10 Pro
Chrome
Edge -> Hotmailアカウント(無料)で、Bingのチャットを利用

やりたいこと

Gmailに届く、特定のメールアドレスから届いたメールの中身のリンク先のWEBページを開き、そこに記載されているテキストデータのうち、特定のデータを抽出して表示する。できればGoogle Colaboratory上で。とりあえずpythonで。

【ChatGPT(Bing)に1回目の質問】

gmailに届いたメールの中の、リンク先のホームページを開いて、そこに記載されている情報をテキストファイルで読み込みたいです。そのためのpythonのプログラムを作成したいです。手順を教えてください。 

素晴らしい。とりあえず、以下のような流れらしいです。

  1. Gmail APIを使用してメールを取得する GoogleのGmail APIを使用してメールを取得します。これにはGoogle Cloud Consoleでのプロジェクトの設定とOAuth2.0認証が必要です。
  2. メールからリンクを抽出する メールの本文からリンクを抽出するために、BeautifulSoupと正規表現を使用します。
  3. ウェブページから情報をスクレイピングする 取得したリンクからウェブページを開き、必要な情報をスクレイピングします。これには通常、requestsとBeautifulSoupが使用されます。
  4. 情報をテキストファイルに保存する

ここまでまずはやってみたいと思います。

(1)Gmail APIを使用してメールを取得する

どんどん質問します。

Google Colaboratoryで、Gmailのメールの内容を取得するpythonのコードを教えてください
Google ColaboratoryでGmailのメールの内容を取得するためには、GoogleのGmail APIを使用することができます。以下にその一例を示します。ただし、このコードはあくまで一例であり、実際に使用する際には適切な認証情報を設定し、適切なスコープを指定する必要があります。

```python
# 必要なライブラリをインポートします
from google.colab import auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

# 認証を行います
auth.authenticate_user()

# Gmail APIのサービスを作成します
service = build('gmail', 'v1')

# メールのリストを取得します
try:
    results = service.users().messages().list(userId='me').execute()
    messages = results.get('messages', [])
    for message in messages:
        msg = service.users().messages().get(userId='me', id=message['id']).execute()
        print('Subject: ', msg['payload']['headers'][0]['value'])
except HttpError as error:
    print(f'An error occurred: {error}')
```

このコードは、ユーザーのGmailアカウントからメールのリストを取得し、各メールの件名を表示します。ただし、このコードを実行する前に、Google Cloud ConsoleでGmail APIを有効にし、適切な認証情報を設定する必要があります。

また、このコードはメールの内容を取得する基本的な方法を示していますが、具体的な要件(特定のメールを検索する、メールの本文や添付ファイルを取得するなど)によっては、コードを適宜調整する必要があります。

なお、GoogleのAPIを使用する際は、Googleの利用規約とプライバシーポリシーを遵守してください。また、他人のプライバシーを尊重し、許可なく他人のメールを読むことは避けてください。これは法律違反となり、個人のプライバシーを侵害する行為です。ご理解とご協力をお願いいたします。

Gmail APIを有効にする方法は?

Gmail APIを有効にする方法は、以下のようになります。

- Google Cloud Consoleにログインします。[6](^1^)でアクセスできます。
- 左側のメニューから、APIs and Servicesをクリックします。
- Enable APIs and Servicesをクリックします。
- 検索フィールドにGmail APIを入力し、選択します。
- Enableをクリックします。

これで、Gmail APIが有効になりました。次に、認証情報を取得する必要があります。認証情報は、GoogleのAPIを使用する際に必要なもので、OAuth client IDとOAuth client secretという2つのパラメーターからら構成されます。認証情報の取得方法は、[5](^5^)や[3](^3^)などのサイトで詳しく説明されています。

Gmail APIを有効にする方法についてご質問がありましたら、お気気軽にお問い合わせください。😊

ソース: Bing との会話 2023/12/15
(1) Enable and disable APIs - API Console Help. https://support.google.com/googleapi/answer/6158841?hl=en.
(2) Obtaining an API key for the Gmail API | SecuritySenses. https://securitysenses.com/videos/obtaining-api-key-gmail-api.
(3) Google Apps Script quickstart | Gmail | Google for Developers. https://developers.google.com/gmail/api/quickstart/apps-script.
(4) Enable Google Workspace APIs | Google for Developers. https://developers.google.com/workspace/guides/enable-apis.
(5) How to Enable Gmail API in Google Cloud Platform (GCP). https://jd-bots.com/2021/05/08/how-to-enable-gmail-api-in-google-cloud-platform-gcp/.
(6) undefined. https://console.developers.google.com/.

ここまではWEBブラウザをEdgeを使用していたのですが、Chromeを使ってみることにしました。

Gmail APIを有効にする方法は?(2回目)

Gmail APIを有効にする手順は以下の通りです¹²:

1. 使用するGmailアカウントにサインインします。
2. [Google Developer Console](^1^)にアクセスします。
3. ページ上部のプルダウンをクリックして「プロジェクトを作成」ボタンをクリックします。
4. 任意のプロジェクト名を入力し、作成したプロジェクトを選択します。
5. 「APIを有効にする」ボタンをクリックします。
6. 「Gmail API」を選択し、有効にします。
7. 認証情報を作成します。これには以下のステップが含まれます:
   - 「使用するAPI」は「Gmail API」が選択されていることを確認します。
   - 「APIを呼び出す場所」は「ウェブブラウザ(Javascript)」を選択します。
   - 「アクセスするデータの種類」は「ユーザーデータ」をチェックします。
   - 入力したら「必要な認証情報」をクリックします。
8. OAuth 2.0 クライアントIDを作成します。これには以下のステップが含まれます:
   - 「名前」に任意の名前を入力します。
   - 「承認済みの JavaScript 生成元」と「承認済みのリダイレクト URI」に、このプラグインを利用するドメインを入力します。
   - 入力したら「クライアントIDの作成」をクリックします。
9. OAuth 2.0 同意画面を設定します。これには以下のステップが含まれます:
   - メールアドレスはサインイン中のGmailアカウントが選択されています。
   - 「ユーザーに表示するサービス名」に任意の名前を入力します。
   - 必要であればその他のカスタマイズオプションを設定します。
   - 入力したら「次へ」をクリックします。
10. 認証情報をダウンロードすることはありませんので、「完了」をクリックします。
11. 作成された認証情報が一覧に表示されますので、これをクリックするとクライアントIDとクライアントシークレットが表示されます。

以上がDeveloper Consoleでの設定です。新たに作成されたクライアントIDはそのままでは利用できなくなりました。[アナウンス記事](^1^) Allow Risky Access Permissions By Unreviewed Apps のグループに参加することでクライアントIDが有効になります¹。このフォーラムへの参加による有効化の手続きについては Gmail APIの利用ガイド に説明があります¹。上記フォーラムに参加する以外に OAuth Developer Verification から承認リクエストを提出して回答を待つ方法もありますが、 OAuth Developer Verification Form FAQ にて、プラグイン等によるメール送信を目的とした場合には、承認リクエストを行う必要のないことがアナウンスされていますのでご確認ください¹。

Source: Conversation with Bing, 2023/12/15
(1) Gmail APIでクライアントIDを有効にするまでの手順 | Spica. https://spica.tokyo/note/275.
(2) Gmail API を使ってメールを操作(前編) - PowerBuilder. https://japan.appeon.com/technical/techblog/manipulate-gmail-api-1/.
(3) Gmail APIでクライアントIDを有効にするまでの手順 | Spica. https://spica.tokyo/note/275.
(4) Gmail APIでクライアントIDを有効にするまでの手順 | Spica. https://spica.tokyo/note/275.
(5) Gmail を API 経由で使う方法 (セッティング編). https://techceed-inc.com/engineer_blog/485/.
(6) PythonでGmailのAPIを通してメールを送信する方法 | WATLAB .... https://watlab-blog.com/2020/04/19/gmail-api-send/.
(7) undefined. https://www.googleapis.com/auth/gmail.readonly.
(8) undefined. https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=.
(9) undefined. https://developers.google.com/gmail/api.

https://console.developers.google.com/ を開く。

同意して続行

上部の「プロジェクトの選択」>「新しいプロジェクト」

プロジェクト名を入力して、作成

APIとサービスの有効化 

Gmail API

有効にする

認証情報を作成

ユーザーデータのラジオボタンをONにして、完了

左側の 認証情報 > 同意画面を作成

Google Workspace(月額1360円)を契約していないと、外部しか選択できません。

しかし、これより先に進めない。ググってもわからない。。。いきなり詰んでいる、、、

アプリの保存中にエラーが発生しました

というエラー。どうにもならない。。。

10回くらい試して、いけた、原因は全く分からず。暗雲が、、、

スコープを追加または削除 > Gmail APIをONにして、 更新 > 保存して次へ

ADD USERSで自分のメールアドレスを追加して、保存して次へ

次の画面では、 ダッシュボードへ戻る これでやっと

OAuth同意画面

作成が終了。

認証情報を作成

認証情報を作成 > APIキー

このAPIキーが作成されます

認証情報を作成 > OAuthクライアントID

WEBアプリケーション を選択

ううむ、よくわからない。。。

調べる

https://qiita.com/muuuuuwa/items/822c6cffedb9b3c27e21

Python を使い、Gmail API 経由で Gmail の送受信を行う 2021/3/24

スポンサーリンク