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

31/01/2019

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() {  }を削除しておきます。 カッコ  も忘れずに削除します。

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

[php]
var id = 'ここにシート固有のIDを記入’;
function doGet(e) {
//2021/09 追記:現在このコードは使えません。新しいコードを利用してください。
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);
}
[/php]

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

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

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

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..固有IDは強調表示された部分がこのシートの固有IDになります。https://docs.google.com/spreadsheets/d/11nA0CjfQ35b1LRRKRjTGK_dvRq5V8-8sdaZMnbec-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セルに日時がプリントされているはずです。

【2020/03 追記】

googleのセキュリティが強化されました。急に使えなくなった方はこちらの設定に直してください。

『 【arduinoIDE】googlesheetに書き込んでみた 』 ..【2020/03 追記】googleのセキュリティが強化されました。急に使えなくなった方はこちらの設定に直してください。..

esp32からgoogle sheetsに投げる

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

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

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

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

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

esp32でgooglesheetsに書き込みする

【2022/03】追記

暫く使っていない間にいつの間にかgooglesheetに書き込みが出来ないようになっているようです。

そこでchromeに保存されているgoogleのCA証明書をWiFiClientSecureライブラリ(ヘッダファイル)で使えるようにしてアクセスしてみたところポートに接続出来たので共有したいと思います。

【esp32】chromeでルート証明書をダウンロードする

【2023/02 追記】

googleのセキュリティ強化によりルート証明書に加えてアクセスキーが必要かもしれません。

その場合にはgoogleが発行するサービスキーを渡すことでgooglesheetsに書き込み出来ます。

【農業IOT】googleサービスアカウントの秘密鍵を作成する

スポンサーリンク