Ccmmutty logo
Commutty IT
3 min read

[業務効率化]python の pyperclip で、取得したクリップボードの中身を1行ずつ処理する

https://cdn.magicode.io/media/notebox/3b44751a-5990-4b7e-a4b8-042b2f7b24fa.jpeg

複数行に対して同じ処理をしたい

業務でドキュメントを作成する際、複数行に対して、
★箇条書きに一括変換したい
★末尾に特定の処理を入れたい
★行毎に少し複雑な処理をしたい
という場合があります。
その場合、クリップボードを経由してスクリプトを実行すると
インポート用のファイルを準備する必要がなく便利に実行できます。
python の pyperclip を使用して、
「取得したクリップボードの中身を1行ずつ処理する」
流れを記載します。

取得の流れ

  1. ドキュメント全体をコピーする(クリップボードにいれる)
  2. スクリプトを実行する
  3. クリップボードを貼り付ける

実行結果

箇条書きに一括変換したい
末尾に特定の処理を入れたい
行毎に少し複雑な処理をしたい

★箇条書きに一括変換したい
★末尾に特定の処理を入れたい
★行毎に少し複雑な処理をしたい

スクリプト実体

#モジュールをインポート
## クリップボードを取得する pip install pyperclip
import pyperclip
## スクリプトの終了に使用
import sys

# list形式で取得
## listを初期化
mojiretsu=[]

## クリップボードを取得 うまくとれなかったらエラーで終了
try:
    mojiretsu=pyperclip.paste().split('\n')
except:
    pyperclip.copy("エラー:クリップボードに正しくコピー出来ていないかもしれません")
    sys.exit()

# 結果リストの初期化
kekka=[]

# 取得したクリップボードの中身を1行ずつ処理する
for line in mojiretsu:
    ## 1行毎に実施したい処理を記載する
    ## ……
    ## 例えば各行頭に★を追加する
    star_line = "★"+line
    # 処理した内容を結果配列に追加する
    kekka.append(star_line)

# 明示的に中身を全て文字列にする
kekka_list=map(str,kekka)
# リストを改行しながらjoinしてひとつの文字列にする
kekka_str='\n'.join(kekka_list)
# クリップボードへ
pyperclip.copy(kekka_str)

スクリプトで、ちょっとずつ時短して、業務を効率化しましょう

Magicode上ではpyperclipは動作しないため、確認はローカルで行いました。
また、例外処理については下記でも確認しています。
塵も積もれば山となる、
日々の大量に押し寄せる業務を、ちょっとずつ時短することでサクサク進められたらいいなと思います。

Discussion

コメントにはログインが必要です。