H열의 예정일 값이 현재일에서 10일을 더한 값에 속한다면 지메일로 메일을 보내는 스크립트
파이썬과 Google API를 사용하여 지메일로 메일을 보내는 스크립트를 만들 수 있습니다. 아래는 스크립트입니다.
import datetime
import os.path
import pickle
from google.auth.transport.requests import Request
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.errors import HttpError
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials
# 구글 클라우드 플랫폼에서 받은 클라이언트 ID와 시크릿 ID를 입력하세요.
CLIENT_ID = 'YOUR_CLIENT_ID'
CLIENT_SECRET = 'YOUR_CLIENT_SECRET'
# 필요한 스코프 설정(이메일 보내기)
SCOPES = ['https://www.googleapis.com/auth/gmail.send']
# 사용자 인증을 위한 크리덴셜 가져오기(없다면 인증 창을 띄움)
creds = None
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
# Gmail API 클라이언트 인스턴스 만들기
service = build('gmail', 'v1', credentials=creds)
# 예정일을 현재일에서 10일 이후로 설정합니다.
due_date = datetime.datetime.now() + datetime.timedelta(days=10)
# H열의 값을 가져오기 위해 구글 시트 API를 사용합니다.
sheet_service = build('sheets', 'v4', credentials=creds)
sheet_id = 'YOUR_SHEET_ID'
range_name = 'Sheet1!H2:H'
result = sheet_service.spreadsheets().values().get(spreadsheetId=sheet_id, range=range_name).execute()
values = result.get('values', [])
if not values:
print('No data found.')
else:
for row in values:
if row:
if datetime.datetime.strptime(row[0], '%m/%d/%Y') == due_date.date():
# H열의 예정일 값이 현재일에서 10일 이후로 설정된 경우 이메일 보내기
message = create_message('YOUR_EMAIL_ADDRESS', 'TO_EMAIL_ADDRESS', 'Subject', 'Message Text')
send_message(service, 'me', message)
print('Email sent.')
else:
print('No email to send.')
def create_message(sender, to, subject, message_text):
"""Create a message for an email.
Args:
sender: Email address of the sender.
to: Email address of the recipient.
subject: The subject of the email message.
message_text: The text of the email message.
Returns:
An object containing a base64url encoded email object.
"""
message = MIMEText(message_text)
message['to'] = to
message['subject'] = subject
message['from'] = sender
return {'raw': base64.urlsafe_b64encode(message.as_bytes()).decode()}
def send_message