1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

推しのTV出演情報を登録するLINEbotを作ってみる。[Python+スプシでLINEbot作成その②]

Last updated at Posted at 2023-07-25

※この投稿は、
初学者のオタクが、推しの出演情報を管理するLINEbotを作ってみた。【Python+LINEMessagingAPI+スプレッドシート】
のその2です。

その1はこちら
その3はこちら

やったこと

その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で送信してきた文字列」が格納されている。
登録処理の為の関数に、送信されてきた文字を渡している。

動作確認

①放送日、出演者、番組名をカンマ区切りで記載し、送信する。
スクリーンショット 2023-07-26 030136.png

②送信した情報がスプレッドシートに保存され、「登録完了しました!」のメッセージが返ってくる。
スクリーンショット 2023-07-26 030220.png

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?