11_Googlespreadsheet
Googleスプレッドシートへデータを送る
サンプルデータをGoogleスプレッドシートへ記録します。
準備する
CherryIoTをPCに接続する
CherryIoTをPCのUSB-A挿入口に接続します。
Wi-Fiの情報を確認する
CherryIoTを接続する2.4GHz Wi-FiのSSID(ネットワーク名)とパスワードを確認します。Wi-Fiルーター本体のラベルや設定画面に記載されています。分からない場合は、ネットワークの管理者に確認してください。
Googleスプレッドシートを準備する
Googleスプレッドシートを作成する
Googleスプレッドシートを新しく作成します。シート名は任意で構いません。

Apps Scriptを開く
スプレッドシート上部の「拡張機能」から「Apps Script」をクリックします。

Apps Scriptのコードを貼り付ける
最初から入力されているコードを削除し、次のコードを貼り付けます。
var id = 'ここにスプレッドシートIDを入力';
function doGet(e) {
if (e.parameter == undefined) {
return ContentService.createTextOutput('Parameter undefined');
}
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]);
return ContentService.createTextOutput('OK');
}
スプレッドシートIDを入力する
スプレッドシートのURLにある「/d/」と「/edit」の間の文字列がスプレッドシートIDです。コピーして、Apps Scriptの「ここにスプレッドシートIDを入力」の部分へ貼り付けます。

新しいデプロイを作成する
Apps Script画面右上の「デプロイ」から「新しいデプロイ」をクリックします。

ウェブアプリを選択する
「種類の選択」の歯車アイコンをクリックし、「ウェブアプリ」を選択します。

アクセス設定を行う
「次のユーザーとして実行」は「自分」、「アクセスできるユーザー」は「全員」に設定し、「デプロイ」をクリックします。

アクセスを承認する
初回はアクセスの承認を求められます。画面の案内に従って、Apps Scriptを作成したGoogleアカウントを選択します。

スプレッドシートへのアクセスを許可する
権限の内容を確認し、画面下部の「許可」をクリックします。

ウェブアプリURLをコピーする
デプロイが完了したら、「ウェブアプリ」のURLをコピーします。このURLをあとでサンプルコードへ入力します。

サンプルコード
GitHubで公開しているサンプルコードです。コードをコピーして Arduino IDEで使用します。
GitHubからコードを読み込んでいます...プログラムを書き込む
上のサンプルコードをコピーし、Arduino IDEに貼りつけます。
設定情報を書き換える
コード内の以下の箇所を、「1 準備する」で確認・取得した情報に 書き換えます。
| コード内の項目 | 入力する情報 |
|---|---|
ssid | 接続するWi-FiのSSID |
password | Wi-Fiのパスワード |
url | Google Apps ScriptのウェブアプリURL |
const char* ssid = "ここにSSIDを入力";const char* password = "ここにパスワードを入力";String url = "ここにウェブアプリURLを入力";コードの左側にある項目名や記号は残し、例を参考に値の部分だけを 書き換えます。値を囲む"、行末の;、 証明書の開始・終了行などは削除しません。書き換えたあと、xxxxxなどの仮の文字が残っていないことを確認してください。
Wi-Fiのパスワード、APIキー、トークン、証明書などを入力したコードは、 Webサイト、SNS、GitHubなどへ公開しないでください。
ボードとポートの設定を確認し、左上の 「→(書き込みボタン)」を押してCherryIoTに書き込みます。
初めて書き込む方は「はじめてのCherryIoT」で詳しい手順を確認してください。
動作確認
Googleスプレッドシートで確認する
Googleスプレッドシートにデータが追加されることを確認する
プログラムを書き込むと、Googleスプレッドシートに「11.11」「22.22」「33.33」のサンプルデータが繰り返し追加されます。

Googleスプレッドシートに「11.11」「22.22」「33.33」のサンプルデータが追加されるなら成功です。
動作中、シリアルモニターには送信する3つの値と、Google Apps Scriptへの接続・送信状況が表示されます。
Arduino IDEの画面右上にあるアイコンをクリックすると、 画面下にシリアルモニターが表示されます。

コードの解説
Google Apps ScriptのWebアプリへ測定値を付けたリクエストを送り、シートへ追記します。
GitHubからコードを読み込んでいます...Serial.begin(115200);シリアルモニターへ文字や測定値を表示するため、通信速度を115200bpsに設定します。
sendData();sendData関数を呼び出し、Googleスプレッドシートへデータを送信します。
delay(10000);10秒待ちます。
WiFi.begin(ssid, password);設定したSSIDとパスワードでWi-Fiへ接続します。
WiFiClientSecure sslclient;GoogleのサーバーとHTTPS通信するための接続を作ります。
String url = "https://script.google.com/macros/s/AKfycbwatdrSt50TSvsoO5S1-7qFu4zQAKA1sp6lAMMN4QQiJ4WWjKFUgz1TY-5Fmi3BNBpd/exec";データを受け取るGoogle Apps ScriptのWebアプリURLを指定します。自分で作成したWebアプリURLへ書き換えます。
float sensor_data1= 11.11;送信する1つ目のサンプルデータを用意します。2つ目、3つ目も同様です。
url += "&1_cell=";送信先URLへ1つ目のデータを表す項目名を追加します。ほかのデータも同様に追加します。
sslclient.setInsecure();このサンプルではHTTPS証明書の検証を省略します。
if (!sslclient.connect(server, 443)) {Google Apps Scriptのサーバーへ接続し、失敗した場合は送信を中止します。
sslclient.println("GET " + url);測定値を付けたURLをGETリクエストとして送信します。
Serial.println("Data transmission completed");リクエストの送信処理が完了したことをシリアルモニターに表示します。スプレッドシートへ記録されたことは、スプレッドシート側でも確認します。
sslclient.stop();データ送信後にサーバーとの接続を終了します。
WiFi.mode(WIFI_OFF);送信が終わったためWi-Fiを停止します。