【IoT】IoTデータを、GASを用いてGoogleスプレッドシートに溜める方法
複数のIoTデバイスから取得したデータを分析し活用するための第一歩として、まずはデータを溜める必要があります。データを溜める場所としては、複数の選択肢がありますが、今回Googleスプレッドシートに溜める方法を試しました。実際に試してみると、複数デバイスの情報を1つの表に自動転記することができる点や、非エンジニアの方でもデータ活用しやすい点など、メリットがあることがわかりました。具体的な方法や気づきをまとめます。
■ IoTデータ活用のためにはデータを溜める事が重要
複数のIoTデバイスから現場データを取得し、データをクラウドに送信する場合、日に日に多くのデータがクラウドに溜まってきます。最初は、日々の判断にデータ活用していたとしても、データが溜まってくると、1年間の集計をしたい、月ごとの傾向を見たいなどのニーズも生まれるのではないでしょうか。
本記事では、データ活用を前提として、データをどのように溜めればよいかについて考えます。
■ データをどこに溜めると良いか?
データを溜める場所としては、SORACOM Harvest、Amazon S3、Excel、Googleスプレッドシートなどの選択肢があります。この内、
SORACOM Harvestにデータを溜める方法は、SORACOMの通信を用いる場合、最も簡単な方法です。SORACOM Lagoonを用いれば、SORACOM Harvestに溜めたデータを可視化することもできます。通常、SORACOM Harvestに保存されたデータは、40日間はデータ保存されます。長期保存する場合は、オプション料金を払うか、DLして別途管理する必要があります。
Amazon S3に溜める方法もあります。料金も安く、長期保存に適しています。一方、データの取り扱いには一定の知識が必要であり、非エンジニアの方にとってはデータの取り扱いが難しいかもしれません。
Excelに溜める方法もあります。前述の通り、SORACOM Harvestのデータ保管期間が通常40日間であるため、毎月データをCSVでDLし、Excelに貼り付けることで、データを溜める事ができます。私もよくこの方法で、データ活用しています。ただし、デバイス数が数台の場合は大きな問題にはならないのですが、デバイス数が増えると、データDLの手間、データ量の大きさ、データ整形の手間など、色々と問題が出てきました。
そこで、今回試したのはGoogleスプレッドシートに溜める方法です。IoTデバイスで取得したデータをAWS Lambdaで整形し、GAS経由でGoogleスプレッドシートに投げ込みます。この方法であれば、Excelにデータを溜める場合と異なり、データ整形やデータ保存を自動化できます。表形式のデータですので、非エンジニアでも扱いやすいデータと言えます。
では、Lambda+Googleスプレッドシートの方法について、次章で詳しく解説します。
■ GASを用いてGoogleスプレッドシートにデータを溜める方法
◎ 概要
IoTシステム全体構成を、1枚にまとめました。ポイントは右下のGoogle App Script(GASに転送するAWS Lambdaと、Googleスプレッドシートに転記するGASです。詳しく書きます。
SQSを入れている理由や方法に関しては、前回の記事をご参照ください。
◎ Step1. Google Apps Script (GAS)の設定
まず、Googleスプレッドシートを作成し、スクリプトエディタにGASコードを書きます。
次に、データを受け取るために、ウェブアプリとして公開します。
◎ Step2. AWS Lambda関数の設定
LambdaからGASのURLにPOSTリクエストを送信するためのPythonコード例です。
import json
import urllib3
def lambda_handler(event, context):
# GASのウェブアプリURL
gas_url = 'YOUR_GAS_WEB_APP_URL'
# ダミーデータを含むPOSTデータの内容
payload = {
'deviceId': 'dummyDevice123', # ダミーのデバイスID
'data1': 25.6, # ダミーのデータ1(例:温度)
'data2': 60.5 # ダミーのデータ2(例:湿度)
}
# HTTPクライアントの初期化
http = urllib3.PoolManager()
# POSTリクエストを送信
response = http.request(
'POST',
gas_url,
body=json.dumps(payload),
headers={'Content-Type': 'application/json'}
)
# 結果を確認
return {
'statusCode': response.status,
'body': response.data.decode('utf-8')
}
上記を実行すると、AWS Lambda→GAS→スプレッドシートという流れで、データがGoogleスプレッドシートに直接保存されます。
■ Googleスプレッドシートにデータを溜めるメリット
実際にやってみて感じたことは、これまで手動でSORACOM HarvestからDLし、Excelに転記していたため、これと比べて相当に楽ということです。複数デバイスのデータを1つの表で管理できる点や、自動転記できる点が気に入っています。表形式ですので、非エンジニアの方もデータ活用しやすいですね。
■ まとめと今後の課題
普段、表計算ソフトとしてExcelを使っており、Googleスプレッドシートをほとんど使わないのですが、クラウドから直接スプレッドシートに投げ込める点が、非常に便利だと感じました。
GASを初めて触りましたが、生成AIとの対話のおかげで、コードを書くことができました。GASを活用すれば、IoTに関わらず色々と自動化できそうだと感じたため、GASについても知識を広げていきたいと感じました。
記事執筆時点で、この方法を運用し初めてまだ1週間ですが、今後データ溜める中で新たな気づきがあれば、別途まとめます。
本記事では、IoTデータをGASを用いてGoogleスプレッドシートに溜める方法について執筆しました。参考なれば幸いです。