2025年8月12日火曜日

Google Spread Sheetの利用

 


以前にESP32で作っていたものを、Raspberry Pi Pico W + MicroPythonで再現してみました。

1.Googleスプレッドシートの設定

1.Google Drive → 右クリック → Google スプレッドシート

2.作成して共有をクリック




3.任意の名前を変更


4.拡張機能→Apps Script
スクリーンショット 2025-04-19 161622

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.右上のデプロイから新しいデプロイをクリック




7.種類の設定マーク→ウェブアプリをクリック

deploy_AA.jpg

8.次のユーザーとして実行は、自分のメールアドレス

  アクセスできるユーザー:全員

  デプロイをクリックします
deploy_BB.jpg

9.データへのアクセスを許可するために、アクセスを承認をクリックしてください。

shounin_deploy.jpg

10.アカウントの選択で、該当する「アカウント」を選びます。

11.左下のAdvanced(詳細)をクリックしてください。

google_dep_DD.jpg
12.次に警告が出るので、Go to PicoW-tempCSV (unsafe)に移動 をクリックしてください。


13.Pico WからGoogleドライブへのアクセスリクエストを許可してください。


14.以下のポップアップ画面が表示され、今回作成した「ウェブアプリ固有のURL」が発行されるので、URLをコピーして完了をクリックしてください。

google_dep_GG.png

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()




【実行結果】

0 件のコメント:

コメントを投稿

Google Spread Sheetの利用

  以前に ESP32 で作っていたものを、Raspberry Pi Pico W + MicroPythonで再現してみました。 1.Googleスプレッドシートの設定 1.Google Drive → 右クリック → Google スプレッドシート 2.作成して共有をクリック