2016-11-25 8 views
0

私は現在、ArduinoからGoogleスプレッドシートにデータを記録する大学の学期プロジェクトに取り組んでいます。Googleのスプレッドシートに複数の行を入力します。

私はgoogleで見つかる数多くのチュートリアルや例を追っていましたが、これまでのところ本当にうまく機能していました。私のArduinoは前記スプレッドシートにデータをアップロードすることができる。

残念ながら、これらすべての例は、常に1つの行を処理するだけです。私たちのプロジェクトでは、同時に2行または3行を記入したいと思います。

私がこれまでに行ったことをすぐに示してくれるかもしれませんが、おそらくあなたが私の(おそらく簡単な)問題を解決するのを助けることができます。

  • 私は、私は1つの行を埋める必要がありますチュートリアルからスクリプトを使用し、私は
  • 私のデータをログに記録したいGoogleスプレッドシートを作成しました。このスクリプトのコードは次のとおりです。

    /*

    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"

私は今、行1を埋めることができています私のデータはURLの最後に入力してください。

しかし、テーブルの2行または3行を埋めるにはどうすればよいでしょうか?私は、コードの作成者が既に3行目を埋めるオプションを実装していると言いますが、私は自分のURLに何を入力してデータを埋め込むかを見つけることができません。

ような何か書くためにすべての私の試み:ちょうど書面で終わった "httpsの//script.google.com/macros/s/AKfycbxhxQqzMoU4_qrujiIMYx2rOiJ07Ff7sQ3uO7EKEWq73YWCOA2M/exec?tempData=datahere & tempData1 = value2のを"

私の最初の行の

datahere & tempData1 = value2の

、第二列の中の最初の値2にdatahereを充填しません。

多分、あなたが私が多数の行を埋めるために何をすることができるかを知っているかもしれません。

敬具

答えて

1

私は次のことをお勧めします:

  1. あなたはスプレッドシートに書きたいデータの2次元配列を作成します。JSONにこれを変換

    var data = [ 
        ["row1value1", "row1value2"], 
        ["row2value1", "row2value2"] 
    ]; 
    
  2. 、再びJavaScriptで、これは次のようになります。:Arduinoの上のクライアントではJavaScriptを使用していた場合、これは次のようになります

    var json = JSON.stringify(data); 
    

    これはあなたの配列の文字列表現を提供します。

  3. このデータを使用して依頼してください。状態を更新するスプレッドシートにデータを送信するので、doGetの代わりにdoPostを使用することをおすすめします。しかし、何かの作業を取得する目的のために、あなたのURLは次のようになります。Appsスクリプトで

    https://script.google.com/<.....>/exec?myarray=<stringified JSON> 
    
  4. 、あなたの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); 
    

ホープこの

を助ける:長方形の2Dアレイを仮定