目次
はじめに
Raspberry PiとGoogleスプレッドシートを連携させることで、データの記録やグラフ化、プログラムの制御変更をスマホのアプリから手軽に実現でき、非常におすすめです。
Raspberry Pi⇔PC間でファイル共有に便利なWinSCPは以下を参照ください。
メカエレ Blog | 電子工作とライフ…


初心者必見!WinSCPでRaspberry PiとWindows PC間のファイル共有を実現する方法
はじめに RealVNC Viewerではファイル転送できません(有料)。そんなときにおすすめなのが、WinSCPというファイル転送ツールです。この記事では、WinSCPを使ってRaspberry P…
メカエレ Blog | 電子工作とライフ…


AmbientでRaspberry Piのセンサーデータをグラフ化|IoT可視化入門
はじめに IoTや電子工作を始めて、「センサーデータをグラフで見たい!」と思ったことはありませんか?そんな時におすすめなのが、「Ambient(アンビエント)」という無料…
Google Cloud Platform (GCP)の設定
スプレッドシートのAPIを使える状態にします。
STEP
新しいプロジェクトを作成
「プロジェクトを作成」をクリックし、名前を付けてプロジェクトを作成します。
STEP
Google Sheets APIとGoogle Drive APIを有効化
- サイドメニューからAPIとサービス→ライブラリに移動
- Google Sheets APIとGoogle Drive APIを検索して有効化
STEP
サービスアカウントの作成とキーのダウンロード
- APIとサービス→認証情報に移動
- 認証情報を作成」→サービスアカウントを選択
- サービスアカウントを作成し、JSONキーを生成してダウンロード
- JSONファイルをラズベリーパイに転送
Python環境のセットアップ
・ラズベリーパイに以下のライブラリをインストールします
pip install gspread oauth2client
# 上記で駄目なら
sudo apt install python3-gspread python3-oauth2client
# それでもだめなら以下。環境が壊れる危険がある為、自己責任でお願いします。
pip install gspread oauth2client --break-system-packages
・JSONキーを保存
先ほどダウンロードしたJSONファイルを、ラズベリーパイ内の安全な場所(例: /home/pi/credentials/
)に保存します。別のPCに保存した場合は、WinSCPを使えば簡単に移動できます。
スプレッドシートの共有設定
ラズベリーパイがGoogle APIを通じてスプレッドシートにアクセスするために認証が必要です。
- スプレッドシートを開く
- 右上の「共有」ボタンをクリック
- JSONファイル内に記載されているサービスアカウントのメールアドレス
(例:your-service-account@your-project.iam.gserviceaccount.com
)をコピー - 「共有相手を追加」にこのメールアドレスを入力し、「編集者」として追加
Raspberry Pi × googleスプレッドシート
スプレッドシートに書き込む
ラズベリーパイで取得したセンサーデータなどをスプレッドシートに書き込むコードです。
スプレッドシート名、sheet名はそれぞれ、raspberry-pi_data、raspiとしています。
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# スコープの設定
scope = [
'https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive'
]
# 認証情報の読み込み
# ご自身のjsonファイルの保存場所を指定してください
credentials = ServiceAccountCredentials.from_json_keyfile_name(
r'/home/pi/****.json', scope)
# Googleスプレッドシートにアクセス
gc = gspread.authorize(credentials)
# スプレッドシートを開く
spreadsheet = gc.open('raspberry-pi_data') # スプレッドシート名を指定
worksheet = spreadsheet.worksheet('raspi') # sheet名を指定
# データの読み込み
data = worksheet.get_all_records()
# データの書き込み
# 14行6列めに文字を記入します
worksheet.update_cell(14, 6, 'Hello, Raspberry Pi!')
スプレッドシートの値を読み取る
データを読み取る方法を示します。
特定のセルの値を取ってきて変数に代入する、時系列データをデータフレームにして分析する等が可能です。
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# スコープの設定
scope = [
'https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive'
]
# 認証情報の読み込み
credentials = ServiceAccountCredentials.from_json_keyfile_name(
r'/home/pi/****.json', scope)
# Googleスプレッドシートにアクセス
gc = gspread.authorize(credentials)
# スプレッドシートを開く
spreadsheet = gc.open('raspberry-pi_data') # スプレッドシート名を指定
worksheet = spreadsheet.worksheet('raspi') # sheet名を指定
# 以下、様々なデータの取得方法
# 特定のセルから数値を読み取る
# 例えば、2行3列のデータを取得
value = worksheet.cell(2, 3).value # 2行3列の値を取得
print(f"セル(2, 3)の値: {value}")
# シート全体をリスト形式で読み取る
all_data = worksheet.get_all_values() # 全セルの値をリスト形式で取得
for row in all_data:
print(row)
# 特定列の数値を抽出
# 例: 3列目のデータをすべて取得(ヘッダーを除く)
column_data = worksheet.col_values(3)[1:] # 1行目(ヘッダー)を除外
print(f"3列目の値: {column_data}")
# 辞書形式でデータを読み取る
# 例: ヘッダーをキーとして各行を辞書形式で取得
records = worksheet.get_all_records()
for record in records:
print(record)
# pandas.DataFrame に変換
# 1行目をヘッダーとし、それ以降をデータとして扱う
df = pd.DataFrame(all_data[1:], columns=all_data[0])
# 必要に応じてデータ型を変換
# 例えば数値データが文字列の場合、float に変換
for col in df.columns:
try:
df[col] = pd.to_numeric(df[col])
except ValueError:
pass # 数値に変換できない列はそのまま
まとめ
googleスプレッドシートとラズベリーパイを連携させれば様々なデバイスから操作することが可能です。また、可視化も容易にでき、やりたいことが増えていくと思います。まずは初期設定をぜひチャレンジしてみてください。
コメント