Arduino与电子表格集成 - 设置Google表格

힘센캥거루
2024년 5월 29일(수정됨)
29
arduino

最近,我和学生们决定使用Arduino观测学校周围的温度和湿度,进行数据分析。
 
需要一张SD卡来存储Arduino测量的数据,而为检查数据,需要将SD卡插入和拔出。 
 
突然想到,如果将数据存储在网上会怎么样呢。
 
今天的文章是关于Arduino与Google表格集成的第一步,即Google电子表格的设置。

1. Google电子表格

Google电子表格是由Google提供的免费网络应用。
 
它主要在浏览器上运行,支持协同编辑和查看,并可以通过应用脚本进行HTTPS请求来修改表格。
 
首先,在Google中搜索“Google电子表格”并创建一个新的表格。

Arduino与电子表格集成 - 设置Google表格-1

登录后,会看到如下窗口。点击空白电子表格来创建一个新表格。

Arduino与电子表格集成 - 设置Google表格-2

 如果生成了新的表格,首先按如下步骤操作:

  • 将电子表格的标题和工作表名称改为英文。(以防错误)

  • 创建数据的列索引。

Arduino与电子表格集成 - 设置Google表格-3Arduino与电子表格集成 - 设置Google表格-4

 现在记住地址栏中电子表格的ID。 

地址格式为'/d/Google电子表格ID/edit#gid=0'。复制中间部分即可。

Arduino与电子表格集成 - 设置Google表格-5

现在Google电子表格的基本设置已完成。接下来,设置电子表格的脚本。

2. 设置应用脚本

进入电子表格菜单中的[扩展程序]-[Apps Script]。

Arduino与电子表格集成 - 设置Google表格-6

 会看到如下窗口。现在可以在function处输入我们需要的代码。

Arduino与电子表格集成 - 设置Google表格-7

 输入以下代码。在此需要指定Google表的ID,以及通过switch和case语句指定所需值的名称。

function doGet(e) { 
  Logger.log( JSON.stringify(e) );
  var result = 'Ok';
  if (e.parameter == 'undefined') {
    result = 'No Parameters';
  }
  else {
    var sheet_id = '您自己的Google表ID'; // Spreadsheet ID
    var sheet = SpreadsheetApp.openById(sheet_id).getActiveSheet();
    var newRow = sheet.getLastRow() + 1; 
    var rowData = [];
    var Curr_Date = new Date();
    rowData[0] = Curr_Date; // Date in column A
    var Curr_Time = Utilities.formatDate(Curr_Date, "Asia/Tokyo", 'HH:mm:ss');
    rowData[1] = Curr_Time; // Time in column B
    for (var param in e.parameter) {
      Logger.log('In for loop, param=' + param);
      var value = stripQuotes(e.parameter[param]);
      Logger.log(param + ':' + e.parameter[param]);
      switch (param) {
        case 'value1':
        rowData[2] = value; 
        result = '3번째 열에 value1 값 입력'; 
        break;
        case 'value2':
        rowData[3] = value;
        result += ' ,4번째 열에 value2 값 입력'; 
        break;
        default:
        result = "unsupported parameter";
      }
    }
    Logger.log(JSON.stringify(rowData));
    var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
    newRange.setValues([rowData]);
  }
  return ContentService.createTextOutput(result);
}
function stripQuotes( value ) {
  return value.replace(/^["']|['"]$/g, "");
}

 输入完成后部署该代码。点击右上角的部署,然后点击新部署。

Arduino与电子表格集成 - 设置Google表格-8

在新部署中,将类型更改为网络应用,访问权限更改为所有用户后点击部署。

如果不设置为所有用户访问,会要求登录。这时可将权限重新设置为所有用户。

Arduino与电子表格集成 - 设置Google表格-9Arduino与电子表格集成 - 设置Google表格-10

 点击部署时会请求访问权限。点击批准访问。

Arduino与电子表格集成 - 设置Google表格-11

 访问窗口打开时,点击你的账户。

Arduino与电子表格集成 - 设置Google表格-12

 会看到警告消息,忽略并点击下方的Advanced。

Arduino与电子表格集成 - 设置Google表格-13

 点击弹出的Go To ~部分进行授权。

Arduino与电子表格集成 - 设置Google表格-14Arduino与电子表格集成 - 设置Google表格-15

然后出现新部署窗口,复制网络应用的URL以验证设置是否生效。

Arduino与电子表格集成 - 设置Google表格-16

3. 验证网络应用

通过GET请求发送到网络应用的URL,会将查询字符串中的数据保存到value1,value2中。

在地址栏的网络应用地址后面添加如下数据,点击回车。 

https://script.google.com/macros/s/Google App Script ID/exec?value1="期待值1"&value2="期待值2"
Arduino与电子表格集成 - 设置Google表格-17

这样传递数据的形式称为查询字符串。在“?”后接期待值,用“&”连接。

进入Google表格后,确认数据是否如期被传递。

Arduino与电子表格集成 - 设置Google表格-18

 非文本数据,比如简单的数字,也可以传递。

Arduino与电子表格集成 - 设置Google表格-19Arduino与电子表格集成 - 设置Google表格-20

值已正确输入。

4. 总结

在本文中,我们简单介绍了通过GET请求向Google电子表格输入数据的方法。

接下来只剩下Arduino通过https通信发送GET请求的操作。

下次文章中将继续讨论。

댓글을 불러오는 중...