【Mac】Pythonスクリプトを「右クリック」一発で実行!ショートカットアプリ活用術

IT
This article can be read in about 4 minutes.

はじめに

前回、Pythonで「PDFのパスワード解除スクリプト」を作りました。

【Python】毎月の面倒な事務作業を自動化!PDFパスワード解除&整理スクリプトを作ってみた

これで作業はだいぶ楽になったのですが、人間とは欲深いもので、「いちいちターミナルを開いてコマンドを打つのも面倒くさい」と思い始めました。

そこで今回は、Mac標準の「ショートカット.app」を使って、このスクリプトをFinderの右クリックメニューに組み込みます。これで正真正銘の「ワンクリック自動化」です。

目標

Finderで対象のPDFファイルを右クリック(または二本指タップ)し、メニューからPDFパスワード解除を選ぶだけで、処理を完了させること。

準備:Pythonスクリプトを少し改造

前回のスクリプトはファイル名を直接書いていましたが、ショートカットアプリから「選んだファイル」を受け取れるように、少し書き換えます。 (sys.argvを使って、渡されたファイルを処理するように変更します)

Python

import pikepdf
import sys
import os

# コマンドライン引数からファイルパスを受け取る(複数選択対応)
input_files = sys.argv[1:]

# 自分のパスワードリスト
password_list = ["19850101", "password123", "0000"] 

for file_path in input_files:
    try:
        # フォルダのパスとファイル名を取得
        dir_name = os.path.dirname(file_path)
        base_name = os.path.basename(file_path)
        
        # パスワードリストを順に試す
        for pwd in password_list:
            try:
                # PDFを開いてみる
                pdf = pikepdf.open(file_path, password=pwd)
                
                # 開けたら「unlocked_」をつけて元の場所に保存
                new_filename = os.path.join(dir_name, f"unlocked_{base_name}")
                pdf.save(new_filename)
                print(f"成功: {base_name}")
                break # 次のファイルへ
                
            except pikepdf.PasswordError:
                continue # パスワード違いなら次へ
            
    except Exception as e:
        print(f"エラーが発生しました: {e}")

手順:Mac標準「ショートカット」アプリの設定

ここからが本番です。MacBook Air1に標準搭載されている「ショートカット」アプリを開きます。

1. クイックアクションを作成

アプリのメニューから「新規ショートカット」を作成します。 画面右側の詳細設定(「i」マーク)で、「クイックアクションとして使用」にチェックを入れます。 これを受け取る対象を「ファイル(PDF)」に設定します。

2. シェルスクリプトを実行

アクションの検索窓から「シェルスクリプトを実行」を選び、ワークフローに追加します。 設定項目は以下のように記述します。

  • 入力: ショートカットの入力
  • シェル: zsh または bash
  • パスの指定:

Bash

# お使いのPythonのパスを指定(brewならこれ)
/opt/homebrew/bin/python3 /Users/satomemo/scripts/unlock_pdf.py "$@"

ポイント: 入力を「引数として」受け取る設定にすること。これで選んだファイルの情報が $@ に入り、Python側に渡されます。

完成:実際の動作デモ

設定が終われば、FinderでPDFを右クリックするだけ。 「クイックアクション」メニューの中に、作った「PDFパスワード解除」ボタンが現れます!

これをポチッと押すだけで、一瞬でパスワードが解除されたファイルが生成されました。 黒い画面を見ることなく、裏側でPythonが仕事をしてくれる。最高です。

まとめ:UIとコードの融合こそ最強の時短

「コードが書ける」ことと「使いやすい」ことは別物です。 Pythonでロジックを作り、Macの機能で使いやすくラップする。この組み合わせこそ、Mac使いのエンジニア(そして忙しい情シス母ちゃん)の醍醐味ですね。

コメント

Copied title and URL