Raspberry Pi & Google Spreasheet 連携
Raspberry Pi 4 Model B について
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
SpreadsheetとGoogle Apps Scriptの構築
Google Apps Scriptコード
function doPost(e) {
try {
// POSTリクエストペイロードをJSONとして解析
var data = JSON.parse(e.postData.contents);
// スクリプトプロパティにスプレッドシートIDは保存している
const PROPERTY_SHEET_ID = PropertiesService.getScriptProperties().getProperties().SHEET_ID;
var ss = SpreadsheetApp.openById(PROPERTY_SHEET_ID);
var sheet = ss.getActiveSheet();
// POSTされた情報を新規行に出力
sheet.appendRow([data.timestamp, data.pingResult]);
return ContentService.createTextOutput(JSON.stringify({"status": "success"})).setMimeType(ContentService.MimeType.JSON);
} catch(error) {
return ContentService.createTextOutput(JSON.stringify({"status": "error", "message": error.toString()})).setMimeType(ContentService.MimeType.JSON);
}
}
GAS側で上記コードを組み込んだら「デプロイ」を行う。
ウェブアプリケーションを左の⚙から選択しWeb appは「自分」
アクセスは「誰でも」にしデプロイを完了させる。
成功するとWeb App URLが表示されるためコピーする。
Raspberyy Pi側
ターミナルを開きvenvで仮想環境を構築
python3 -m venv myenv # myenvは任意の仮想フォルダ名
上記実行すると現在のフォルダにmyenvという仮想フォルダが構築される。
構築できたら下記コマンドを実行し作成した仮想フォルダのアクティベーションを行う
source myenv/bin/activate
アクティベーションが完了したらラズパイにデフォルトで備わっているPython IDE環境Thonnyを開き
下記Pythonコードを書き込み「main.py」となるようにファイル名を作成する。
保存先は「myenv/src/main.py」とする
import os
import json
import requests
from datetime import datetime
# Web App URL of Google Apps Script
WEB_APP_URL = 'デプロイ時に確認したWebAppURLを張り付ける'
# Set Ping Command
response = os.popen('ping -c 4 8.8.8.8').read()
print(response)
# Get Timestamp
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
# Structure Data
data = {
'timestamp': timestamp,
'pingResult': response
}
# POST Request
headers = {'Content-type': 'application/json'}
result = requests.post(WEB_APP_URL, data=json.dumps(data), headers=headers)
print(f'status: {result.status_code}, Response: {result.text}')
上記コードの作成及び保存完了後ターミナルで下記コマンドを実行しスプレッドシートにコマンドの実行結果が反映されるか確認
python src/main.py
実行が成功したらスプレッドシートにコマンド実行日時とpingの情報が出力される。