【arduino_IDE】googlesheetに書き込んでみた

スポンサーリンク

IFTTT利用では一度にgoogle sheetに書き込めるセル数の制限があるので、esp32(esp-wroom-32)からgoogle sheetsに直接書き込めるようにしてみました。

スポンサーリンク

google sheet作成

googleドライブを開き、新規 ⇒ google スプレッドシートに進みます。

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..googleドライブを開き、新規 ⇒ google スプレッドシートに進みます。..

無題のスプレッドシートをクリックして名前を付けます。ここではsensor_dataとしました。

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..無題のスプレッドシートをクリックして名前を付けます。ここではsensor_dataとしました。..

スクリプトエディター

ツール→スクリプトエディタを開きます。

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..ツール→スクリプトエディタを開きます。..

スクリプトエディターが開いたら「無題のプロジェクト」をクリックしてこのプロジェクトに名前を付けます。

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..このプロジェクトに名前を付けます。..

ここでは「sensor_data」としました。入力したらOKをクリックします。

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..ここでは「sensor_data」としました。入力したらOKをクリックします。..

スポンサーリンク

コードの作成

googlesheetで動かせるスクリプトを作成します。

まず、スクリプトエディターに記入されているfunction myFunction() {  }を削除しておきます。 カッコ  も忘れずに削除します。

次に次のスクリプトをコピーして貼り付けます。

var id = 'ここにシート固有のIDを記入'; 
 
function doGet(e) {              
 
  if (e.parameter == undefined) {   
    result = 'Parameter undefined';
  }
  else {
    var sheet = SpreadsheetApp.openById(id).getActiveSheet(); 
    var newRow = sheet.getLastRow() + 1;  // 次の行に入力する
    var rowData = [];       
    rowData[0] = new Date();   //タイムスタンプ
    
    for (var param in e.parameter) {   
      var value = e.parameter[param];  
      rowData[parseInt(param)] = value; 
    } 
    
    var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
    newRange.setValues([rowData]);   
    var result =  'Ok'// Text des Anworts
  }
  return ContentService.createTextOutput(result);
}

次にsensor_dataシートの固有IDをコピーします。

固有IDは強調表示された部分がこのシートの固有IDになります。

https://docs.google.com/spreadsheets/d/11nA0CjfQ85b1LRRKRjTGK_dvRq5V8-8mdaZMnbec-50/edit#gid=0

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..固有IDは協調表示された部分がこのシートの固有IDになります。https://docs.google.com/spreadsheets/d/11nA0CjfQ85b1LRRKRjTGK_dvRq5V8-8mdaZMnbec-50/edit#gid=0..

var id = ‘ここにシート固有のIDを記入’; というところに、コピーしたシートIDを貼り付けます。

このようになります。

var id = ’11nA0CjfQ85b1LRRKRjTGK_dvRq5V8-8mdaZMnbec-50′;

貼り付けしたらファイル ⇒ 保存をクリックして、scriptを保存します。

スポンサーリンク

google scriptをwebアプリとして設定する

公開 ⇒ ウエブアプリケーションとして導入に進みます。

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..公開 ⇒ ウエブアプリケーションとして導入に進みます。..

承認を求められますので、次のユーザーとしてアプリケーションを実行という項目を:自分にします。

アプリケーションにアクセスできるユーザー:を全員(匿名ユーザーを含む)にします。

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..承認を求められますので、次のユーザーとしてアプリケーションを実行という項目を:自分にします。アプリケーションにアクセスできるユーザー:を全員(匿名ユーザーを含む)にします。..

許可をクリックします。(訂正:画像②は自分ではなく全員を選択してください)

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..許可をクリックします。(訂正:画像②は自分ではなく全員を選択してください)..

googleアカウントを選択します。

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..googleアカウントを選択します。..

このアプリは確認されていません!

このようなダイアログが出てきますので、左下の「詳細」をクリックします。

『 【arduinoIDE】googlesheetに書き込んでみた 』 ....

sensor_dataを選択します。

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..sensor_dataを選択します。..

「sensor_dataに次のスコープを許可する」をクリックします。

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..「sensor_dataに次のスコープを許可する」をクリックします。..

作成したスクリプトをテストしてみます。クリックしてブラウザの左上に小さく「OK」と出れば成功です。

OKをクリックしてダイアログを閉じます。

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..作成したスクリプトをテストしてみます。クリックしてブラウザの左上に小さく「OK」と出れば成功です。OKをクリックしてダイアログを閉じます。..

sensor_dataシートを開くとA1セルに日時がプリントされているはずです。

スポンサーリンク

esp32からgoogle sheetsに投げる

ここまでグーグルシート作成と、httpsアクセスしたらgoogle sheetsに書き込むまでが出来ました。

google sheetsスクリプトも一応動いてくれるようですね。

次にhttpsアクセスでgoogle sheetsに実際に書き込みをしてみようと思います。

カズは裏庭のビニールハウスの温度や水耕栽培の溶液管理などを想定してesp-wroom-32で作成しましたが、 M5Stackなどにも使えるのでは?と思います。

esp32のスケッチ(プログラム)はこちらです。