2016-11-25 2 views
0

저는 현재 Arduino에서 Google 스프레드 시트로 데이터를 기록하려는 대학의 학기 프로젝트를 진행하고 있습니다.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 끝에 입력됩니다.

하지만 테이블의 두세 행을 채우고 싶다면 어떻게 진행해야합니까? 나는 코드 작성자가 이미 세 번째 행을 채우기위한 옵션을 구현했다고 말하지만 데이터를 채우기 위해 내 URL에 무엇을 입력해야하는지 알 수 없다.

내 모든 시도는

같은 것을 작성하는 "은 https : //script.google.com/macros/s/AKfycbxhxQqzMoU4_qrujiIMYx2rOiJ07Ff7sQ3uO7EKEWq73YWCOA2M/exec?tempData=datahere & tempData1 = 값 2"

단지 서면으로 종료를

datahere & tempData1 값 2 = 첫 행

번째 행의 제 2 값에 datahere 충전되지.

혹시 내가 수많은 행을 채우기 위해 무엇을 할 수 있는지 알고 있습니다.

안부

답변

1

나는 다음과 같은 제안 :

  1. 는 스프레드 시트에 기록하고자하는 데이터의 2 차원 배열을 만듭니다.이것은 당신에게 당신의 배열의 캐릭터 라인 표현을 제공

    var json = JSON.stringify(data); 
    

    :처럼이 보일 수 있습니다 다시 자바 스크립트, JSON에

    var data = [ 
        ["row1value1", "row1value2"], 
        ["row2value1", "row2value2"] 
    ]; 
    
  2. 변환이 : 아두 이노에 클라이언트는 자바 스크립트를 사용한 경우이처럼 보일 수 있습니다 .

  3. 이제이 데이터를 사용하여 요청하십시오. 상태를 업데이트하는 스프레드 시트로 데이터를 보내므로 doGet 대신 doPost을 사용하는 것이 좋습니다. 그러나, 뭔가 작업을지고의 목적을 위해, 당신의 URL가 보일 것 같은 :에서

    애플리케이션 스크립트에서
    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); 
    

는 희망이

을하는 데 도움이 : 사각형의 2 차원 배열을 가정
관련 문제