プラスチックファン › フォーラム › 射出成形ロボ企画 › 射出成形機ロボットにIoT機能を搭載したい › 返信先: 射出成形機ロボットにIoT機能を搭載したい
こんにちは 前回の予告とうり グラフの作成の説明をしたいと思います
スプレッドシートに「グラフ」のシートを作ります
概要としてプラファンロボから送られてきた データーを保存する「log」のシートから
データーを読み取って 直近 72行分を グラフ表示します
72行は 1時間=60分 ÷ 5分 = 12行 12行X6時間 = 72行となります
以下が GASのコードになります
1回実行すると 「グラフ」のシートにアクセスするたびに 「log」シートからデーターを読んできて
グラフの更新がかかるようになります
スマホなどから このシートを 読み込むだけでも 現在の状況がわかりますが 次は WEBページを
作って もう少し見やすくしてみようと思います
function createChart() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var logSheet = spreadsheet.getSheetByName(“log”);
var graphSheet = spreadsheet.getSheetByName(“グラフ”);
// 既存のグラフを削除
var charts = graphSheet.getCharts();
for (var i = 0; i < charts.length; i++) {
graphSheet.removeChart(charts[i]);
}
// ログシートの最終行を取得
var lastRow = logSheet.getLastRow();
// グラフのデータ範囲を設定(最終行から上方向に72行分=6時間、または最大行数まで)
var startRow = Math.max(1, lastRow – 72); // 最小値を1とする
var endRow = lastRow;
var range = logSheet.getRange(startRow, 1, endRow – startRow + 1, logSheet.getLastColumn());
// グラフを作成する前にデータを四捨五入
var data = range.getValues();
for (var i = 0; i < data.length; i++) {
data[i][1] = Math.round(data[i][1] * 10) / 10; // 温度データ
data[i][2] = Math.round(data[i][2] * 10) / 10; // 湿度データ
}
range.setValues(data);
// グラフを作成
var chart = graphSheet.newChart()
.setChartType(Charts.ChartType.LINE)
.addRange(range)
.setPosition(2, 2, 0, 0)
.setOption(‘title’, ‘作業エリア’)
.setOption(‘hAxis.title’, ‘時間’)
.setOption(‘vAxis.title’, ‘値’)
.setOption(‘series.0’, {labelInLegend: ‘温度’})
.setOption(‘series.1’, {labelInLegend: ‘湿度’})
.build();
// シートにグラフを追加
graphSheet.insertChart(chart);
}