LoginSignup
0
1

More than 1 year has passed since last update.

python初学者がchatGPT先生に教わる/スクショメール編

Posted at

はじめに

初学者がPythonを勉強しています。
間違っている内容や改善などご教示いただければ幸いです。

目的

(共通)Pythonを学習するにあたり、まずは身近にある業務の省人化を目的とする。
(今回)Screenshot撮影(今回は全体) → メーラー(OUTLOOK)起動

*2023.4 chatGPT参考に作成

環境

Windows10
Python 3.8.3 (memo: python -V

全体コード

以下、全体コード

screenshot_to_mail.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import time
import tkinter as tk
from tkinter import messagebox
import pyautogui
import win32com.client as win32

outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)

mail.to = 
mail.bcc = 
mail.subject =
mail.body = 

def take_screenshot():
    i = 1
    while True:
        # スクリーンショットを撮影する
        screenshot = pyautogui.screenshot(region=(0, 0, 1920, 1080))
        screenshot = screenshot.resize((960, 540))

        # スクリーンショットを保存する
        screenshot_path = os.path.join(os.getcwd(), "temp" + str(i) + ".png")
        screenshot.save(screenshot_path)

        # スクリーンショットをメールに添付する
        attachment = mail.Attachments.Add(screenshot_path)
        attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001E", "temp" + str(i) + ".png")
        html_tag = '<img src="cid:temp' + str(i) + '.png">'
        mail.HTMLBody += html_tag

        # スクリーンショットがメールに添付された旨のメッセージを表示する
        print("temp" + str(i) + ".pngがメールに添付されました。")

        i += 1

        # ユーザーに繰り返しの可否を尋ねる
        answer = messagebox.askquestion("繰り返し", "もう1回キャプチャしますか?")
        time.sleep(0.4)
        if answer == 'no':
            print('if break')
            break

    root.destroy()

    # Outlookを最前面に表示する
    print('Outlookを最前面に表示する')
    os.startfile("outlook")
    time.sleep(6)  # Outlookが完全に起動するのを待つ

    # メールを表示する
    print('メール表示')
    # メールを表示する
    mail.Display(True)

    # Outlookを終了する
    outlook.Quit()

    # スクリーンショットを削除する
    for j in range(1, i):
        screenshot_path = os.path.join(os.getcwd(), "temp" + str(j) + ".png")
        os.remove(screenshot_path)

    # 終了メッセージを表示する
    print("プログラムを終了します。")

root = tk.Tk()
root.withdraw()  # GUIウィンドウを非表示にする
messagebox.askquestion("","キャプチャする画面を開いてください。開くとすぐにキャプチャします")

take_screenshot()  # messageboxを表示する    

今後の課題(雑感多め)

【全体】
chatGPTへの指示によりほぼ作成したため、コードがどこまで正しいかの判断をつけるのが困難。(コード理解はあるが、その関数を用いる理由まで深掘りすると・・
可続性、メンテ性を考慮した場合、コメントでの理解(これはchatGPTがベース作成→人が補完)が必須。

当方のようなpython実務経験が浅い人間でも
chatGPTを用いるととりあえずは完成できる。(人は指示する能力、修正させる能力を上げた方がよい)
これは企業規模が小さい場所の方が優位性がある。(自由度が高い、ミスしても影響範囲が小さく、ケアしやすく人の経験値も上がりやすい。)
*リスクもあるため、そこは天秤 

【細かい箇所】
chatGPTを用いたため、これからは出力を増やすことに注力。(時間をかけていくより、OUTPUT量を増やす)

次の展開

目的に沿って、次の業務改善に繋がるプログラムを作成する
OUTPUT継続

最後に

今回もお付き合いありがとうございました。

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