今回はこんな声に対応するガジェットです。
「忘れっぽい性格なので毎朝、今後のスケジュールが把握できると嬉しい。憧れは秘書さんが、『社長、今後のスケジュールはこうなってます』という感じで教えてくれることだなあ」
毎朝秘書さんが今後のスケジュールを教えてくれます
忘れやすい今後のスケジュールを毎朝、秘書さんがラインで教えてくれるガジェットです。予定はスプレッドシート に殴り書きでOK。ラインで連絡くれるのは未完了の物だけになります。
このガジェットでできることはこちら
- カレンダーではなくスプレッドシートに記入した予定を未完了のもののみ毎朝ラインで教えてくれます。
- 今日だけではなく、予定が入っているもの全てお知らせします。
- 教えてくれるのは綺麗な秘書さんなのでやる気マックスです。
- 完了したものはスプレッドシート 上で完了とするだけで通知しなくなります。
注意点はこちら
- スプレッドシートで「未」のフラグだけ通知しますので、完了したものはスプレッドシート 上で「完」のフラグにしないといけません。
- 今回は一方行のラインチャットなので、返信やフラグの変更はできません。
評価(自己)
役立ち度 ★★★★(良し)
効率化 ★★(悪い)
ミス防止 ★★★★(良し)
楽しさ ★★★★★(最高)
操作性 ★★★(平均)
実行環境
使用環境 github Actions、line messaging api
使用言語 python, yaml
使用ライブラリ json、linebot 、datetime、spread、oauth2client、
json、pandas
今回のコード
import json
from linebot import LineBotApi
from linebot.models import TextSendMessage
import datetime as dt
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import json
import pandas as pd
SP_CREDENTIAL_FILE = 'secret.json'
SP_SCOPE = [
'https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive'
]
SP_SHEET_KEY = '予定表が入っているスプレッドシートのキー'
SP_SHEET1 = 'スプレッドシート のシート名'
credentials = ServiceAccountCredentials.from_json_keyfile_name(SP_CREDENTIAL_FILE, SP_SCOPE)
gc = gspread.authorize(credentials)
sh = gc.open_by_key(SP_SHEET_KEY)
worksheet = sh.worksheet(SP_SHEET1)
data = worksheet.get_all_values()
df = pd.DataFrame(data[1:]).iloc[:, :4]
df.columns = ['日付', '曜日', '予定', '完了']
df = df[df['完了']=='未']
df = df.reset_index(drop=True)
file = open('info.json', 'r')
info = json.load(file)
CHANNEL_ACCESS_TOKEN = info['CANNEL_ACCESS_TOKEN']
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)
today = dt.date.today()
day = today.strftime('%Y/%m/%d')
def main():
USER_ID = info['USER_ID']
messages1 = TextSendMessage(text=f'{day}の予定です。')
line_bot_api.push_message(USER_ID, messages1)
for i in range(df.shape[0]):
_df = df.iloc[i]
date = _df['日付']
sche = _df['予定'].replace('/', '、')
messages2 = TextSendMessage(text=f'{date}に、{sche} の予定があります')
line_bot_api.push_message(USER_ID, messages2)
if __name__ == '__main__':
main()
github Actionsの設定
name: chatbot
on:
schedule:
- cron: '0 23 * * *'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install line-bot-sdk
pip install gspread
pip install oauth2client
pip install pandas
- name: Run script
run: |
python app.py
参考
いまにゅさんの動画がすごくわかりやすいです!
【LINEチャットボット作成】毎朝美女からメッセージが届く方法をわかりやすく解説!Python×Messaging API×GitHub Actions - YouTube