0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ソースに基づき、GCE(Google Compute Engine)の無料枠を活用して構築する「Gmail添付PDFパスワード自動解除システム」についてのQiita記事を作成しました。

0
Posted at

GCEの無料枠で運用!Gmailに届くパスワード付きPDFを自動解除してGoogleドライブに保存するシステムの構築

はじめに

業務で送られてくるパスワード付きPDFの開封作業を自動化したいと考えたことはありませんか?
本記事では、Google Compute Engine (GCE) の無料枠を活用し、PythonでGmailの添付ファイルを自動処理するシステムの構築方法を紹介します。

Google Apps Script (GAS) ではなく Python を採用することで、将来的な仕様変更にも柔軟に対応できる構成にしています。

システムの概要

このシステムは、5分ごとに仮想マシンがメールを確認し、特定の条件に合致するメールの添付PDFパスワードを解除してGoogleドライブに保存します。

主な機能

  1. Gmail API: 特定の送信元からの未読メールを検索・取得。
  2. パスワード解除: Pythonの pypdf ライブラリを使用し、メモリ上で安全にパスワードを解除。
  3. Google Drive API: 解除済みPDFを自動保存。
  4. 後処理: 処理済みメールにラベルを付与し、既読化。

技術スタック

  • IaaS: Google Compute Engine (GCE) e2-micro インスタンス(無料枠対象)
  • 言語: Python 3.x
  • ライブラリ: pypdf, Google Client Library
  • API: Gmail API, Google Drive API

構築手順

1. Google Cloud プロジェクトの設定

まずは Google Cloud Platform (GCP) でプロジェクトを作成し、以下の設定を行います。

  • APIの有効化: Gmail API と Google Drive API を有効にします。
  • 認証情報:
    • OAuth 同意画面を設定。
    • 「OAuth クライアント ID」をデスクトップアプリとして作成。
    • credentials.json をダウンロードします。

2. ローカル環境での準備と認証

GCE(GUIなし)にデプロイする前に、ローカル環境で認証を済ませる必要があります。

# リポジトリのクローンと環境構築
git clone <your-repo-url>
cd unlockpdf
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

初回実行(認証):
初回実行時にブラウザが立ち上がるので、Googleアカウントでログインします。完了すると、作業ディレクトリに token.json が生成されます。

3. GCE インスタンスの作成

コストを最小化するため、無料枠(e2-micro) の範囲で運用します。

  • リージョン: us-west1us-central1 など、無料枠対象のリージョンを選択してください。
  • マシンタイプ: e2-micro(以前の f1-micro と間違えないよう注意)。

4. デプロイ

以下のファイルを GCE インスタンスへ転送します。

  • unlock_and_save.py(メインプログラム)
  • credentials.json
  • token.json(ローカルで生成したもの)

5. 自動化の設定

定期実行には crontab を使用するか、より堅牢な運用のために systemd でサービス化します。

Cron設定例:

0 9 * * * /path/to/venv/bin/python /path/to/unlock_and_save.py >> /path/to/cron.log 2>&1

systemdによる堅牢化(推奨):
OS起動時やクラッシュ時の自動再起動を可能にするため、サービス化を推奨します。

[Service]
Restart=always
RestartSec=5
ExecStart=/path/to/venv/bin/python main.py

セキュリティと運用の注意点 ⚠

認証情報の保護

以下の秘匿情報は、絶対に GitHub 等の公開リポジトリに含めないでください。

  • credentials.json
  • token.json
  • PDF_PASSWORD(パスワードをハードコードする場合)

これらは環境変数での管理を強く推奨します。

運用上のベストプラクティス

  • メモリ監視: e2-micro はメモリが約1GBと少ないため、OOM Killer による停止に注意が必要です。
  • 静的IP: 通信を安定させるため、静的外部IPアドレスの予約を推奨します。
  • ロギング: logging ライブラリを使用し、Google Cloud Logging で遠隔から状態を確認できるようにすると便利です。

まとめ

GCE の無料枠を活用することで、実質無料でPDFパスワード解除の自動化システムを運用することが可能です。メモリ制限などの注意点はありますが、Python による柔軟な実装は小規模なプロジェクトや個人の学習に最適です。


注:本記事の内容は検証中の情報を含みます。Google Cloud の料金体系や無料枠の範囲には十分ご注意ください。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?