Google Apps Scriptを使ったIoTサービス

概要

ESP32 MCUリーフと4-Sensorsリーフ(あるいはDHT-22センサ)だけで、IoT環境センサを作り、Google スプレッドシートを使って、センサデータを可視化します。

Google Sheetsの準備

ESP32 MCUリーフが送るセンサデータをGoogle Sheetsで表示する、IoTサービスを紹介します。 ブラウザを閲覧できるPCやスマホがあれば、どこでもデータを確認できます。
まずは、Google Sheetsでデータを表示するための設定を以下の通り行いましょう。

  1. Googleアカウントにログインし、新しいスプレッドシートを作成しましょう。アカウントがない場合は作成してください。


  1. Google Sheetsのタイトル(デフォルト:無題のスプレッドシート)は自由に変更してください。
    また、シート番号(デフォルト:シート1)も自由に変更して大丈夫です。


  1. 下のGoogle SheetsのURLの部分の赤枠で囲った記号列は、後でGoogle Sheetを指定するのに利用するので、適当な場所にコピーしておいてください。
    • ここでは、1ilM_Qz0A82_PueJtT-2PAzlnJ5ZSRB5OC_JkV4WQQCs になります。



  1. 拡張機能からApps Scriptを開き、Githubのソースコードをコピー&ペーストしてください。
function doGet(e) {

    let id = 'google_sheets_id'; 
    let sheetName = 'sheet_name'; 
    var result;

    // e.parameter has received GET parameters, i.e. temperature, humidity, illumination
    if (e.parameter == undefined) {
        result = 'Parameter undefined';
    } else {
        var sheet = SpreadsheetApp.openById(id).getSheetByName(sheetName);
        var newRow = sheet.getLastRow() + 1;  // get row number to be inserted
        var rowData = [];

        // get current time
        rowData[0] = new Date();
        rowData[1] = e.parameter.UniqueID;
        rowData[2] = e.parameter.temperature;
        rowData[3] = e.parameter.humidity;
        rowData[4] = e.parameter.illumination;

        // 1 x rowData.length cells from (newRow, 1) cell are specified
        var newRange = sheet.getRange(newRow, 1, 1, rowData.length);

        // insert data to the target cells
        newRange.setValues([rowData]);
        result =  'Ok';
    }

    return ContentService.createTextOutput(result);
}
    


  1. 以下の変数に、先ほど作成したGoogle Sheetsの情報を入力してください。
    • google_sheets_id:先ほどコピーしたGoogle SheetsのURLの記号列
    • sheet_name:書き込み先のシート名(デフォルト:シート1



  1. Google Sheetsを公開する手順について、説明します。
    右上のデプロイから新しいデプロイをクリックし、タイプ(ここでは ウェブアプリ )を選択します。


  1. 今回は「アクセスできるユーザー」を全員にし、誰でも閲覧できるようにしてから、デプロイをクリックします。


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


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


  1. 左下の詳細をクリックしてください。


  1. 次に警告が出るので、無題のプロジェクト(安全ではないページ)に移動 をクリックしてください。


  1. スクリプトからスプレッドシートへのアクセスリクエストを許可してください。


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


(アプリ固有のURL)

https://script.google.com/macros/s/AKfycbzaAHAO8oBBJ1alqfQAv4h76Q-7ugOLm47jATWiqDczu6vahAl3ZncxSh3tQVRuSVRk/exec

Google Sheetsの動作確認

  1. 今回は試しに、Datetime、UniqueID=Leafony_AP02-1、Temperature=100、Humidity=100、Illumination=100 を、Google Sheetsに書き込んでみます。

  2. アプリ固有のURLの末尾に、?UniqueID=Leafony_AP02-1&temperature=100&humidity=100&illumination=100を追加すると、以下の通りになります。

https://script.google.com/macros/s/AKfycbzaAHAO8oBBJ1alqfQAv4h76Q-7ugOLm47jATWiqDczu6vahAl3ZncxSh3tQVRuSVRk/exec?UniqueID=Leafony_AP02-1&temperature=100&humidity=100&illumination=100


  1. 上記のURLをブラウザに貼り付けてアクセスすると(Enter)、設定したGoogle Sheetsにデータが書き込まれます。

Google Sheetsの1行目に記載されているカラム名は自動表示されないため、予めご記載ください。



スクリプトのミスがあった場合

  1. スクリプトを修正します。
  2. デプロイを管理をクリックします。
  3. 最初と全く同じ設定でデプロイすると修正したコードがうまく反映されないことがあるので、再デプロイのときはデプロイを管理の設定から編集のアイコンをクリックして新バージョンで入力します。
  4. またその時動作しているウェブアプリのURLは以下で確認出来ます。


次へ進む

前のページに戻る

最終更新 January 11, 2023