見出し画像

【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コードを書きます。

次に、データを受け取るために、ウェブアプリとして公開します。

コード入力→デプロイ→新しいデプロイ


歯車マーク→ウェブアプリ
アクセスできるユーザーを全員に変更→デプロイ
デプロイ後、ウェブアプリのURLを取得。これを後でLambda関数で使用。

◎ 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スプレッドシートに溜める方法について執筆しました。参考なれば幸いです。


いいなと思ったら応援しよう!