【arduino_IDE】googlesheetに書き込んでみた
IFTTT利用では一度にgoogle sheetに書き込めるセル数に制限があるので、esp32(esp-wroom-32)からgoogle sheetsに直接書き込めるようにしてみました。
google sheet作成
googleドライブを開き、新規 ⇒ google スプレッドシートに進みます。
無題のスプレッドシートをクリックして名前を付けます。ここではsensor_dataとしました。
スクリプトエディター
ツール→スクリプトエディタを開きます。
スクリプトエディターが開いたら「無題のプロジェクト」をクリックしてこのプロジェクトに名前を付けます。
ここでは「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
var id = 'ここにシート固有のIDを記入’; というところに、コピーしたシートIDを貼り付けます。
このようになります。
var id = ’11nA0CjfQ85b1LRRKRjTGK_dvRq5V8-8mdaZMnbec-50′;
貼り付けしたらファイル ⇒ 保存をクリックして、scriptを保存します。
google scriptをwebアプリとして設定する
公開 ⇒ ウエブアプリケーションとして導入に進みます。
承認を求められますので、次のユーザーとしてアプリケーションを実行という項目を:自分にします。
アプリケーションにアクセスできるユーザー:を全員(匿名ユーザーを含む)にします。
許可をクリックします。(訂正:画像②は自分ではなく全員を選択してください)
googleアカウントを選択します。
このアプリは確認されていません!
このようなダイアログが出てきますので、左下の「詳細」をクリックします。
sensor_dataを選択します。
「sensor_dataに次のスコープを許可する」をクリックします。
作成したスクリプトをテストしてみます。クリックしてブラウザの左上に小さく「OK」と出れば成功です。
OKをクリックしてダイアログを閉じます。
sensor_dataシートを開くとA1セルに日時がプリントされているはずです。
【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サービスアカウントの秘密鍵を作成する