2016-11-25 88 views
0

我目前正在为我的大学开展一个学期项目,在该项目中我们想要将数据从Arduino记录到Google电子表格中。通过谷歌脚本在google电子表格中填写多行

我正在关注我可以在google上找到的众多教程和示例,它迄今为止工作得非常好,非常好。我的Arduino能够将数据上传到上述电子表格。

不幸的是,所有这些例子总是只处理一行来填充。对于我们的项目,我们希望同时填写2或3行。

我很快就会展示我迄今为止所做的工作,也许您可​​以帮助我解决我的问题(可能很容易)。

  • 我创建了我要记录我的数据
  • 我从一个教程,应填写一排使用的脚本谷歌电子表格。在这个脚本的代码是:

    /*

    GET request query: https://script.google.com/macros/s/ /exec?tempData=data_here

    */

    /* Using spreadsheet API */

    function doGet(e) { Logger.log(JSON.stringify(e)); // view parameters

    var result = 'Ok'; // assume success

    if (e.parameter == undefined) { result = 'No Parameters'; } else { var id = '1luP86swf0zXxxE4EaNeXPtCE9tN4iF4VCicpTr8FlMk'; // Spreadsheet ID var sheet = SpreadsheetApp.openById(id).getActiveSheet(); var newRow = sheet.getLastRow() + 1; var rowData = []; //var waktu = new Date(); rowData[0] = new Date(); // Timestamp in column A 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 'tempData': //Parameter rowData[1] = value; //Value in column B break; case 'tempData1': rowData[2] = value; //Value in column C break; default: result = "unsupported parameter"; } } Logger.log(JSON.stringify(rowData));

    // Write new row below var newRange = sheet.getRange(newRow, 1, 1, rowData.length); newRange.setValues([rowData]); } // Return result of operation return ContentService.createTextOutput(result); } /** * Remove leading and trailing single or double quotes */ function stripQuotes(value) { return value.replace(/^["']|['"]$/g, ""); }

  • 通过在浏览器中键入以下命令行

https://script.google.com/macros/s/AKfycbxhxQqzMoU4_qrujiIMYx2rOiJ07Ff7sQ3uO7EKEWq73YWCOA2M/exec?tempData=datahere

我现在能够填补一行与我的数据输入在网址的末尾。

但是我现在该如何进展,当我想填充表格的两三行?我说,代码的作者已经实现了填充第三行的选项,但我无法找到在我的url中输入什么,然后填充数据。

所有我尝试写类似

“的https://script.google.com/macros/s/AKfycbxhxQqzMoU4_qrujiIMYx2rOiJ07Ff7sQ3uO7EKEWq73YWCOA2M/exec?tempData=datahere & tempData1 =数值”

只是以书面形式结束

datahere & tempData1 =值2

在我的第一行中,不填充datahere成在所述第二行的第一个和值2。

也许你们中的一个人知道我能填满许多行。

问候

回答

1

我建议如下:

  1. 创建数据的二维数组要写入到电子表格。如果你对Arduino的客户端上使用JavaScript,这可能是这样的:

    var data = [ 
        ["row1value1", "row1value2"], 
        ["row2value1", "row2value2"] 
    ]; 
    
  2. 它转换为JSON,再在JavaScript中,这可能是这样的:

    var json = JSON.stringify(data); 
    

    这给你的阵列的字符串表示。

  3. 现在使用这些数据发出您的要求。我建议你应该看看使用doPost而不是doGet,因为您正在向更新状态的电子表格发送数据。然而,对于获得一些工作的目的,你的URL看起来像:

    https://script.google.com/<.....>/exec?myarray=<stringified JSON> 
    
  4. 在Google Apps脚本,在你的doGet(再次,可以考虑使用doPost代替),然后你可以使用:

    // Get the JSON representation of the array: 
    var json = e.parameter.myarray; 
    // Convert back to 2d array 
    var data = JSON.parse(json); 
    
  5. 现在,您可以使用setValues将这写入表格中的Range,例如假设矩形二维数组:

    sheet.getRange(1, 1, data.length, data[0].length).setValues(data); 
    

希望这有助于

相关问题