以前にESP32で作っていたものを、Raspberry Pi Pico W + MicroPythonで再現してみました。
1.Googleスプレッドシートの設定
1.Google Drive → 右クリック → Google スプレッドシート
2.作成して共有をクリック
3.任意の名前を変更
4.拡張機能→Apps Script
5.プロジェクト名を変更し、下記コードを入力します。
/**
* HTTP GETリクエストを処理する関数
* 指定されたGoogleスプレッドシートにリクエストのパラメータを記録します。
*
* @param {Object} e - イベントオブジェクト(リクエストパラメータを含む)
* @return {ContentService.Output} - 成功メッセージを返します。
*/
function doGet(e) {
// データを保存する「3で作成したGoogleスプレッドシートのURL」を指定
const url = "";
// URLを使ってスプレッドシートを開く
const ss = SpreadsheetApp.openByUrl(url);
// スプレッドシート内の最初のシートを取得
const sheet = ss.getSheets()[0];
// HTTP GETリクエストで送られたパラメータを取得
// パラメータ名 A1, B1, C1 に対応する値を取得
const A1 = e.parameter.A1; // リクエストパラメータ "A1"
const B1 = e.parameter.B1; // リクエストパラメータ "B1"
const C1 = e.parameter.C1; // リクエストパラメータ "C1"
// 現在の日時を取得してタイムスタンプを作成
const timestamp = new Date();
// シートの最後に新しい行を追加(タイムスタンプとパラメータの値を記録)
sheet.appendRow([timestamp, A1, B1, C1]);
// レスポンスとして "success" を返す
return ContentService.createTextOutput('success');
}
6.右上のデプロイから新しいデプロイをクリック
8.次のユーザーとして実行は、自分のメールアドレス
アクセスできるユーザー:全員
デプロイをクリックします
9.データへのアクセスを許可するために、アクセスを承認をクリックしてください。
10.アカウントの選択で、該当する「アカウント」を選びます。
11.左下のAdvanced(詳細)をクリックしてください。
12.次に警告が出るので、Go to PicoW-tempCSV (unsafe)に移動 をクリックしてください。
13.Pico WからGoogleドライブへのアクセスリクエストを許可してください。
14.以下のポップアップ画面が表示され、今回作成した「ウェブアプリ固有のURL」が発行されるので、URLをコピーして完了をクリックしてください。

2.ソースコード(Pico w側)
import network
import urequests
import time
import random
# ★変更要:Wi-Fi情報
SSID = '' # 例: 'MyWiFi'
PASSWORD = '' # 例: 'password1234'
# ★変更要:Google Apps ScriptのURL
BASE_URL = '' # 例: 'https://script.google.com/macros/s/xxxxx/exec'
# Wi-Fi接続関数
def connect_wifi(ssid, password):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.disconnect()
wlan.connect(ssid, password)
print("Connecting to WiFi", end="")
timeout = 10 # 最大10秒待機
for i in range(timeout):
if wlan.isconnected():
print("\nConnected!")
print("IP address:", wlan.ifconfig()[0])
return True
print(".", end="")
time.sleep(1)
print("\nFailed to connect to WiFi.")
return False
# データ送信関数
def send_to_google_sheet(url, a1, b1, c1):
final_url = f"{url}?A1={a1}&B1={b1}&C1={c1}"
print("Generated URL:")
print(final_url)
try:
response = urequests.get(final_url)
print("HTTP Status Code:", response.status_code)
print("Payload:", response.text)
response.close()
except Exception as e:
print("Request failed:", e)
# メイン処理
def main():
if connect_wifi(SSID, PASSWORD):
# ランダムな値を生成
a1 = random.randint(20, 30)
b1 = random.randint(40, 60)
c1 = random.randint(70, 90)
print("Sending data to Google Spreadsheet:")
print(f"A1: {a1}, B1: {b1}, C1: {c1}")
send_to_google_sheet(BASE_URL, a1, b1, c1)
# 実行
main()
【実行結果】
コメント
コメントを投稿