2016-11-25 2 views
0

В настоящее время я работаю над семестровым проектом для своего университета, в котором мы хотим зарегистрировать данные из Arduino в электронную таблицу google.Заполните несколько строк в электронной таблице google с помощью скрипта google

Я следил за многочисленными учебниками и примерами, которые я мог найти в Google, и он работал до сих пор действительно, очень хорошо. Мой Arduino может загружать данные в электронную таблицу.

К сожалению, все эти примеры всегда касаются только одной строки для заполнения. Для нашего проекта мы хотели бы заполнить 2 или 3 строки одновременно.

Вкратце покажу, что я сделал до сих пор, и, возможно, вы можете помочь мне решить мою (возможно, легкую) проблему.

  • Я создал таблицу 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"

Я теперь в состоянии заполнить строку один с моими данными введите в конце URL.

Но как мне прогрессировать сейчас, когда я хочу заполнить две или три строки таблицы? Я говорю, что автор кода уже реализовал вариант заполнения третьей строки, но я не могу узнать, что вводить в мой url, а затем заполнить его данными.

Все мои попытки написать что-то вроде

"https: //script.google.com/macros/s/AKfycbxhxQqzMoU4_qrujiIMYx2rOiJ07Ff7sQ3uO7EKEWq73YWCOA2M/exec?tempData=datahere & tempData1 = значение2"

только закончилась в письменной форме

datahere & tempData1 = значение2

в моем первом ряду, а не заполнение datahere в первую и значение 2, чтобы во втором ряду.

Возможно, один из вас знает, что я могу, чтобы заполнить многочисленные ряды.

С наилучшими пожеланиями

ответ

1

Я хотел бы предложить следующее:

  1. Создать 2d массив ваших данных, которую вы хотите записать в таблицу.Если ваш клиент на 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. В Apps Script, в вашем 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. Теперь вы можете написать это Range в листе, используя setValues, например предполагая прямоугольный 2d массива:

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

Надеется, что это помогает

Смежные вопросы