※この投稿は、
初学者のオタクが、推しの出演情報を管理するLINEbotを作ってみた。【Python+LINEMessagingAPI+スプレッドシート】
のその2です。
やったこと
その1で写経して作成した勤怠管理LINEbotの処理を修正し、TV出演情報を登録するLINEbotにリメイクしました。
仕様
①放送日、出演者、番組名のデータをカンマ区切り1行で記載する。
②Pythonのsplit関数を用いてデータをカンマごとに分割後、1レコードとしてテーブルに保存。
③登録が成功したら、「登録完了しました!」メッセージを返す。
実装
下記の通り、登録処理を定義しました。
app.py
import numpy as np
import pandas as pd
# 登録
def registration(data):
#カンマ区切りでNumpyの配列にした後、np.newaxisで次元追加(DataFrameに変換した際に1行になるように)
#array([['日付', '出演者', '番組情報']])
new_record = np.array(data.split(','))[np.newaxis, :]
worksheet = auth()
#スプレッドシートから全データを取得
df1 = pd.DataFrame(worksheet.get_all_records())
#new_recordをDataFrameに変換
df2 = pd.DataFrame(new_record)
df2.columns = ['日付', '出演者', '番組情報']
#元データと新データの結合
df = pd.concat([df1, df2], ignore_index=True)
worksheet.update([df.columns.values.tolist()] + df.values.tolist())
print('登録完了しました')
Flaskを用いて書かれている下記の箇所(メッセージの受信・送信に関わる部分)を、推しTV出演情報bot用に修正。
app.py
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
registration(event.message.text)
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text='登録完了しました!'))
event.message.textには、「ユーザがLINEで送信してきた文字列」が格納されている。
登録処理の為の関数に、送信されてきた文字を渡している。