
盆栽の管理向上をめざして 4:LINE Botで画像データを管理したい1
はじめに
盆栽の管理を始め、所有盆栽の全てにタグ付けを行いGoogleスプレッドシートに記入し、今度は取りためた画像を紐づけするためのうまい方法を考えています。
前回はPCでトリミング後、画像サイズを小さくし、Googleドライブにアップロードし、そのファイル一覧をGoogleスプレッドシートに自動で取りこむチャレンジをしました。
フォルダに画像ファイルが追加、削除されたとき、考えなければならないことはたくさんあります。そもそも、keyを紐づけする後作業が発生するため、あまり良い方法ではありません。
そんな中、最後にLINE Botを使う方法をひらめきました。というより、探し当てました。
LINE Botを使って、Googleドライブに画像を転送し、Googleスプレッドシートにリンクとメッセージを記入する。
これができれば、やりたいことはできそうな気がしてきました。
今回はここからチャレンジし、紆余曲折を経て、LINE Botを試すところまでを記事にします。体験記としてお読みください。
結果を知りたい方は次回以降の記事をお待ちください。
さっそくチャレンジしてみます
ChatGPT3.5先生に相談します
You
LINE botを使って、Googleドライブに画像を転送し、Googleスプレッドシートにリンクとメッセージを記入する。
ChatGPT
LINE Botを使用して、Googleドライブに画像を転送し、Googleスプレッドシートにリンクとメッセージを記入するためには、以下の手順を実行する必要があります。以下は、一般的な手順の概要です。
1.LINE Developer ConsoleでMessaging APIを設定する:
LINE Botを作成し、Messaging APIを有効にします。必要なトークンを取得します。
2.Google Cloud Platform (GCP)でプロジェクトを作成する:
GoogleドライブとGoogle Sheets APIを有効にします。
APIキーまたは認証情報を取得します。
3.LINE Botサーバーをセットアップする:
LINE Botサーバーをセットアップし、LINE Messaging APIを使用してLINEとの連携を確立します。
4.Googleドライブに画像をアップロードする:
LINE Botが画像を受信したとき、その画像をGoogleドライブにアップロードします。これにはGoogleドライブ APIを使用します。
5.Googleスプレッドシートにリンクとメッセージを記入する:
Googleドライブにアップロードされた画像のリンクとLINEからのメッセージを取得し、それをGoogleスプレッドシートに記入します。Google Sheets APIを使用します。
以下は、Pythonを使用してGoogleドライブとGoogleスプレッドシートにアクセスするための簡単なサンプルコードの例です。実際の使用には、適切な認証とエラーハンドリングを含める必要があります。
from google.oauth2 import service_account
from googleapiclient.discovery import build
from linebot import LineBotApi
# LINE BotのトークンとChannel Secret
LINE_CHANNEL_ACCESS_TOKEN = 'Your_Line_Channel_Access_Token'
line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN)
# Googleサービスアカウントの認証情報
SCOPES = ['https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/spreadsheets']
SERVICE_ACCOUNT_FILE = 'path/to/your/service-account-file.json'
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
# GoogleドライブとスプレッドシートのAPIクライアント
drive_service = build('drive', 'v3', credentials=credentials)
sheets_service = build('sheets', 'v4', credentials=credentials)
# LINEからのメッセージと画像の処理
@handler.add(MessageEvent, message=ImageMessage)
def handle_image_message(event):
message_id = event.message.id
message_content = line_bot_api.get_message_content(message_id)
# 画像をGoogleドライブにアップロード
file_metadata = {'name': 'image.jpg', 'parents': ['your_folder_id']}
media = MediaIoBaseUpload(io.BytesIO(message_content.content), mimetype='image/jpeg')
file = drive_service.files().create(body=file_metadata, media_body=media, fields='id').execute()
file_id = file.get('id')
# Googleスプレッドシートにデータを書き込む
spreadsheet_id = 'your_spreadsheet_id'
values = [['=HYPERLINK("https://drive.google.com/uc?id=' + file_id + '")', 'Your Message']]
body = {'values': values}
result = sheets_service.spreadsheets().values().append(spreadsheetId=spreadsheet_id, range='Sheet1', body=body, valueInputOption='RAW').execute()
上記のコードは一般的な流れを示しており、実際の要件に合わせて調整する必要があります。各APIの詳細な使い方については、Google Cloud PlatformとLINE Messaging APIのドキュメントを参照してください。
ばっちり答えてくださいました。
でも私にはほとんど内容を理解することができません。
少しずつ調べながらやってみることにします
1.LINE Developer ConsoleでMessaging APIを設定する
1.LINE Developer ConsoleでMessaging APIを設定する:
LINE Botを作成し、Messaging APIを有効にします。必要なトークンを取得します。
ネット検索で調べます。
Messaging APIを始めよう
を見ながら、試してみます。
PCで「LINE Developersコンソール」にアクセスします。

「LINEアカウントでログイン」を押します。

メールアドレスとパスワードを入力します。
PCでこの操作を行うと、スマホで確認番号を入力するよう求められます。

緑の4桁の数字が表示されます。

スマホの確認画面に入力すると次へ進みます。
スマホの画面をキャプチャ

開発者名、メールアドレスを記入し、LINE開発者契約を確認、最後に「アカウント作成」を押します。


プロバイダー名を記入し、「作成」ボタンを押します。

Messaging APIを選択します。

だんだん話が大きくなってきましたが、すべては壮大な計画のためです。
以前、スマートウオッチのアプリを公開するため、Google Play Consoleを登録したときのようなドキドキ感を味わっています。
必要事項を記入し、
最後に「作成」ボタンを押します。

「OK」を押します。
個人的な盆栽写真の画像転送のためにここまでする必要があるのか。
少し怖くなってきました。
ひょっとしたら、このチャネルを知って友達登録してしまうと、誰でも私の盆栽画像管理場所に画像をポスト出来てしまうのではないか?
という怖さがあります。


ここに来るまでにたくさんの契約文章を読み、同意してきました。
全てのユーザーが善意のもとに技術を利用する約束はどこにもありません。
せめて、予防線を張ることぐらいしかできないのでしょう。
ここまでで、1.の処理が終了です。
2.Google Cloud Platform (GCP)でプロジェクトを作成する
2.Google Cloud Platform (GCP)でプロジェクトを作成する:
- GoogleドライブとGoogle Sheets APIを有効にします。
- APIキーまたは認証情報を取得します。
前回記事でチャレンジしたことは無駄ではなかったかもしれません。
なんとなくわかるような気がします。
とはいえ、Google Cloud Platform (GCP)は未知ですし、ここも調べながら慎重に行った方が無難です。
プロジェクトの作成と管理

Google Cloud Platform (GCP)は初めてと思っていましたが、ことあるごとにかじっていたので、以前作ったサービスが転がっていました。
ということは、一から作成する場合、別の手順になるかもしれません。
「プロジェクトの作成」を押します。

プロジェクト名をどうするか悩みましたが、ここは直球勝負「LINE-Bonsai-Photo-Post-API」にしました。そして「作成」ボタンを押します。


このあたりまでできましたが、この先がわかりません。
あれ?もっと別画面から入っていった覚えが。。。
今までは、Googleドライブで「新しいスプレッドシート」を作成した後、拡張機能から「Apps Script」を選択していました。
このあたりで少し迷子になり、初心者向けの記事を探しました。
コメント:後から振り返ってみると、ここで大きな勘違いをしていたことになります。Google Cloud Platform(GCP)とGoogle Apps Script(GAS)を混同しておりました。
【初心者向け】GAS×LINEでチャットボットを自作する【Line Bot】
これに乗っかっていけばいい所まで行けそうですが、浮気するとぐちゃぐちゃになりそうだったので、チラ見しながら進んでいくことにしました。
https://script.google.com/ をChromeで開きます。
そして「新しいプロジェクト」を押すと、以下の画面になります。


「新しいデプロイ」を押します。

歯車アイコン→「ウェブアプリ」を選択します。

アクセスできるユーザーを「全員」にし、「デプロイ」を押します。

「完了」を押して終了です。
3.LINE Botサーバーをセットアップする:
- LINE Botサーバーをセットアップし、LINE Messaging APIを使用してLINEとの連携を確立します。
ごにょごにょして、この画面にたどり着きました。


GASのWebhook URLをコピペしました。
「検証」ボタンを押します。

はい「成功」。ガイドのおかげです。
これでOKと思って実行してみましたが、うまくできません。
Webhookの利用を有効にしてもだめです。
もう一体何が悪いのか全く分かりません。
先が見えず力尽きてしまいました。
次の記事へつづく。。。
#盆栽管理 #画像管理 #LINEbot #GoogleCloudPlatform #GCP #GoogleAppsScript #GAS #体験記