11_Googlespreadsheet

Googleスプレッドシートへデータを送る

サンプルデータをGoogleスプレッドシートへ記録します。

Wi-Fi通信
1

準備する

CherryIoTをPCに接続する

CherryIoTをPCのUSB-A挿入口に接続します。

Wi-Fiの情報を確認する

CherryIoTを接続する2.4GHz Wi-FiのSSID(ネットワーク名)とパスワードを確認します。Wi-Fiルーター本体のラベルや設定画面に記載されています。分からない場合は、ネットワークの管理者に確認してください。

Googleスプレッドシートを準備する

Googleスプレッドシートを作成する

Googleスプレッドシートを新しく作成します。シート名は任意で構いません。

新しく作成したGoogleスプレッドシート

Apps Scriptを開く

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

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');
}
Google Apps Scriptの編集画面

スプレッドシートIDを入力する

スプレッドシートのURLにある「/d/」と「/edit」の間の文字列がスプレッドシートIDです。コピーして、Apps Scriptの「ここにスプレッドシートIDを入力」の部分へ貼り付けます。

GoogleスプレッドシートのURLにあるスプレッドシートID

新しいデプロイを作成する

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

Google Apps Scriptで新しいデプロイを選択する画面

ウェブアプリを選択する

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

Google Apps Scriptのデプロイの種類からウェブアプリを選択する画面

アクセス設定を行う

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

Google Apps Scriptのウェブアプリのアクセス設定画面

アクセスを承認する

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

Google Apps Scriptのアクセス承認画面

スプレッドシートへのアクセスを許可する

権限の内容を確認し、画面下部の「許可」をクリックします。

Google Apps Scriptにスプレッドシートへのアクセスを許可する画面

ウェブアプリURLをコピーする

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

Google Apps Scriptのデプロイ完了画面に表示されたウェブアプリURL
2

サンプルコード

GitHubで公開しているサンプルコードです。コードをコピーして Arduino IDEで使用します。

11_Googlespreadsheet.ino
GitHubで開く
GitHubからコードを読み込んでいます...
3

プログラムを書き込む

上のサンプルコードをコピーし、Arduino IDEに貼りつけます。

設定情報を書き換える

コード内の以下の箇所を、「1 準備する」で確認・取得した情報に 書き換えます。

コード内の項目入力する情報
ssid接続するWi-FiのSSID
passwordWi-Fiのパスワード
urlGoogle Apps ScriptのウェブアプリURL
const char* ssid = "ここにSSIDを入力";const char* password = "ここにパスワードを入力";String url = "ここにウェブアプリURLを入力";

コードの左側にある項目名や記号は残し、例を参考に値の部分だけを 書き換えます。値を囲む"、行末の;、 証明書の開始・終了行などは削除しません。書き換えたあと、xxxxxなどの仮の文字が残っていないことを確認してください。

Wi-Fiのパスワード、APIキー、トークン、証明書などを入力したコードは、 Webサイト、SNS、GitHubなどへ公開しないでください。

ボードとポートの設定を確認し、左上の 「→(書き込みボタン)」を押してCherryIoTに書き込みます。

初めて書き込む方は「はじめてのCherryIoT」で詳しい手順を確認してください。

4

動作確認

Googleスプレッドシートで確認する

Googleスプレッドシートにデータが追加されることを確認する

プログラムを書き込むと、Googleスプレッドシートに「11.11」「22.22」「33.33」のサンプルデータが繰り返し追加されます。

Googleスプレッドシートに11.11、22.22、33.33のサンプルデータが追加された画面

Googleスプレッドシートに「11.11」「22.22」「33.33」のサンプルデータが追加されるなら成功です。

動作中、シリアルモニターには送信する3つの値と、Google Apps Scriptへの接続・送信状況が表示されます。

Arduino IDEの画面右上にあるアイコンをクリックすると、 画面下にシリアルモニターが表示されます。

Arduino IDEでシリアルモニターを表示する場所
5

コードの解説

Google Apps ScriptのWebアプリへ測定値を付けたリクエストを送り、シートへ追記します。

11_Googlespreadsheet.ino
GitHubで開く
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を停止します。