試してみたブログ

AI関連・iPhone/Pixelなどのガジェット・音声入力・サーマルプリンタなど興味をある事をどんどん試してみた際の記録

子どもの献立表をAIでスプシに転記して毎日サーマルプリンタから印刷する

背景

  • 毎朝の日課として明日の献立は何?と壁の献立表を確認している
  • 「すぐーる」に献立のPDFが毎月来る
  • せっかくなら2人分をサーマルプリンタから印刷してそこで確認したい

試してみた

PDFを読み取ってデータ化

  • ChatGPTにPDFを添付して下記のプロンプトで読み込ませる
  • プロンプト
子どもの献立です。 スプレッドシートに転記したく日付(YYYY/MM/DD形式)、曜日、献立をtsvで記載したいので、文字起こしして一覧化してください。
  • スプシに転記

  • 思った以上に精度が良い(どこが間違っているか分からないぐらい)

  • 2人分実施(小学校・こども園
  • Pythonコードの作成
  • プロンプト
pythonでスプレッドシートの「A」シートと「B」シートからA列の今日の日付(YYYY/MM/DD形式)の行のデータを取ってきたい
  • 出来たコード
import gspread
from google.oauth2.service_account import Credentials
from datetime import datetime, timedelta

SCOPES = ["https://www.googleapis.com/auth/spreadsheets.readonly"]
creds = Credentials.from_service_account_file("service_account.json", scopes=SCOPES)
gc = gspread.authorize(creds)

SPREADSHEET_ID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
sh = gc.open_by_key(SPREADSHEET_ID)

tomorrow = datetime.now().date() + timedelta(days=1)
tomorrow_str = tomorrow.strftime("%Y/%m/%d")  

def get_menu(sheet_name):
    ws = sh.worksheet(sheet_name)
    rows = ws.get_all_values()  # 2次元リストで全取得[web:12][web:30]
    header = rows[0]
    data_rows = rows[1:]

    date_col = 0  # A列
    menu_col = 2  # C列

    menus = []
    for row in data_rows:
        if len(row) <= menu_col:
            continue
        if row[date_col] == tomorrow_str:
            menus.append(row[menu_col])

    return menus

kodomo1_menus = get_menu("A")
kodomo2_menus = get_menu("B")

print("XXの明日の献立:", kodomo1_menus)
print("XXの明日の献立:", kodomo2_menus)
  • gspreadをpip install
  • credentialを取得して格納
  • スプシIDをいれて実行

  • いつも通りの手順で、サーマル出力+iPhoneのショートカットへ

振り返り

  • データ作成の部分が手間になりそうだが、このレベルの作業であれば月1でもやっていけそう
  • 今後は嫁さんも学校の先生なので嫁さんの献立表も入れて、それを見て夕飯の献立を決めるという流れができそう
  • サーマルプリンタの活用が1歩進んだ