はららの技術ブログ

高専生のプログラミング備忘録とか

【学生必見】クラスラインを自動化して時間割連絡をBotにやらせよう!|Line notify活用

はじめに

 

 

学生のみなさん、クラスラインでの連絡ってめんどくさいですよね。

そこで!

クラスラインに時間割と提出物の連絡をしてくれるBotを作成してみませんか?

ということで、

 

今回の内容

クラスラインで時間割連絡をしてくれるBotの作り方を解説!

ではレッツゴー!

制作にあたって

完成品

毎日おなじ時刻に連絡してくれます!

使用するもの

・Line  Notify(Botを作成するため必要)

・Python3(プログラムを実行する)

・グーグルスプレッドシート(課題のデータベース)

・タスクスケジューラー(定期実行のために必要)

 

制作条件

・時間割は毎週同じ

・定期実行させることを考える

実際に作成しよう!

完成コード(飛ばし読み可)

 
import requests
import datetime
import gspread
from google.oauth2.service_account import Credentials
from oauth2client.service_account import ServiceAccountCredentials

credentials = ServiceAccountCredentials.from_json_keyfile_name('暗号キーのパス', scope)
gc = gspread.authorize(credentials)
wks = gc.open('スプレッドシートの名前').sheet1

kadai=wks.get_all_values()
TOKEN = '取得したトークン'
#APIのURL
#送りたい内容
time = datetime.datetime.now()
time = time.strftime('%m月%d日')
today = datetime.datetime.today()
youbi=today.weekday()
Youbi=["月","火","水","木","金","土","日"]
nittei=[
    ["英1","保体","英文法","-"],
    ["基数I","地理","化学IA","-"],
    ["製図","体育","国語I","特活"],
    ["基数I","生地学","化学","-"],
    ["基数II","国語","系セミ","英補"],
    ["-","-","-","-"],
    ["-","-","-","-"]
]
text="""
・{}
"""*len(kadai)
send_contents = f"""
{time}{Youbi[youbi]})です。

--【日程】--
(1){nittei[youbi][0]}
(2){nittei[youbi][1]}
(3){nittei[youbi][2]}
(4){nittei[youbi][3]}
------
があります。
--【近日課題】--
{text}
------
""".format(*kadai)
TOKEN_dic = {'Authorization': 'Bearer' + ' ' + TOKEN} 
send_dic = {'message': send_contents}
requests.post(api_url, headers=TOKEN_dic, data=send_dic)

1.Line Notifyへの登録

以下のサイトで解説されているように、Line Notifyの登録を済ませ、トークンを発行してください。

rooter.jp

2.スプレッドシートAPIへの登録&JSONキー習得

hituji-ws.com

できたら、スプレッドシートファイルを作成してID等をメモっておいてください。

3.コードを書く

(1)ライブラリのインポート

import requests
import datetime
import gspread
from google.oauth2.service_account import Credentials
from oauth2client.service_account import ServiceAccountCredentials

(2)スプレッドシートへ接続

credentials = ServiceAccountCredentials.from_json_keyfile_name('暗号キーのパス', scope)
gc = gspread.authorize(credentials)
wks = gc.open('スプレッドシートの名前').sheet1

kadai=wks.get_all_values()

(3)Line Notifyへ接続

TOKEN = '取得したトークン'

(4)送りたい内容を記述(ここをアレンジするといいかも!)

 

time = datetime.datetime.now()
time = time.strftime('%m月%d日')
today = datetime.datetime.today()
youbi=today.weekday()
Youbi=["月","火","水","木","金","土","日"]
nittei=[
    ["英1","保体","英文法","-"],
    ["基数I","地理","化学IA","-"],
    ["製図","体育","国語I","特活"],
    ["基数I","生地学","化学","-"],
    ["基数II","国語","系セミ","英補"],
    ["-","-","-","-"],
    ["-","-","-","-"]
]
text="""
・{}
"""*len(kadai)
send_contents = f"""
{time}{Youbi[youbi]})です。

--【日程】--
(1){nittei[youbi][0]}
(2){nittei[youbi][1]}
(3){nittei[youbi][2]}
(4){nittei[youbi][3]}
------
があります。
--【近日課題】--
{text}
------
""".format(*kadai)

私は、

・今日の日付

・時間割(曜日を使ってリストにアクセス)

・課題

を連絡するようにしています。

(5)メッセージ送信

TOKEN_dic = {'Authorization': 'Bearer' + ' ' + TOKEN} 
send_dic = {'message': send_contents}
requests.post(api_url, headers=TOKEN_dic, data=send_dic)

連絡する課題を変えるには?

 

スプレッドシートを開いてください。

このように課題を管理することで、問題なく動きます。

定期実行させよう!

詳しくは下の記事で解説されています

laboratory.kazuuu.net

うまくいくと…

このようになります!