2016-11-25 54 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); 
    

希望這有助於

相關問題