2012-11-22 2 views
1

을 사용하여 JSON을 Google 애플리케이션 스크립트로 보냅니다. POST 메서드를 사용하여 Google 애플리케이션 스크립트에 JSON의 일종을 보낼 수 있는지 알고 싶습니다. JSON이 전송되면 Google 스크립트에 의해 처리됩니다.제목으로 POST 메서드

지금까지 3 개의 입력이있는 표준 HTML 양식을 사용하여 게시물 요청을 보냈습니다 (이 가이드는 http://mashe.hawksey.info/2011/10/google-spreadsheets-as-a-database-insert-with-apps-script-form-postget-submit-method/).

$.ajax({ 
    type: "POST", 
    url: url, 
    data: "someSortOfData", 
    success: function(data){alert("ok")}, 
    error: function(message){alert("fail")} 
}).done(function(msg) { 
    alert("Data Saved: " + msg); 
}); 

"someSortOfData이 같은 아약스 호출을 사용하여 ..

지금은 구글 스크립트에 일부 JSON을 보내 아약스 호출로 이동하고 싶습니다,하지만 난 방법을 모른다 "내가 보내고있는 실제 데이터입니다 (json, 간단한 텍스트, html 등으로 tryed). 스크립트를 실행할 때마다 호출은 "오류"기능을 계속 입력하며 이유를 알지 못합니다.

이전에 말씀 드렸듯이 표준 HTML 양식을 사용하여 데이터를 전송하므로 URL이 괜찮다고 생각합니다. 문제는 내가 생각하는 데이터를 보내는 것입니다. 어쩌면 서버 쪽, Google 스크립트가 텍스트가 아닌 다른 것을 기대하지 않고 있습니까? ..

이 아마 너무이 코드를 수정해야

function doPost(e) { 
    var ss = SpreadsheetApp.openById(ScriptProperties.getProperty('active')); 
    var sheet = ss.getSheetByName("DATA"); 
    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]; 
    var nextRow = sheet.getLastRow(); // get next row 
    var cell = sheet.getRange('a1'); 
    var col = 0; 
    for (i in headers){ 
    val = e.parameter[headers[i]]; 
    cell.offset(nextRow, col).setValue(val); 
    col++; 
    } 

    //return sent data 
    var app = UiApp.createApplication(); 
    var panel = app.createVerticalPanel(); 
    for(p in e.parameters){ 
    panel.add(app.createLabel(p +" "+e.parameters[p])); 
    } 
    app.add(panel); 
    return app; 
} 

같은 스크립트 (서버 측)의 모습이지만, 처음 난 서버에 제대로 JSON 보내려고했다 무엇 내가 잘못하고있어?

+0

Google 스크립트가 게시물 요청에서 오는 데이터를 Google 스프레드 시트에 쓰는 것을 잊어 버렸습니다. – BeNdErR

+1

어디에서 AJAX 전화를 걸려고합니까? Google Apps Script 위에 별도의 웹 앱입니까? 여기에 높은 수준의 분리를 설명해 주시겠습니까? –

+0

내가 게시물에서 언급했듯이 새로 고치지 않고 데이터를 제출하기 위해 아약스를 사용해 보았지만 교차 도메인/XHTTP 보안 문제가 발생했습니다. 여기서 대답은 http://stackoverflow.com/questions/10000020/ajax-post-to-google-spreadsheet 내가 수정할 수있는 숨겨진 iframe 트릭을 사용하여 사용하는 예제를 강조 표시합니다. – mhawksey

답변

-1

주석에서 언급했듯이 클라이언트 측 크로스 도메인 스크립팅 문제와 비슷할 수 있습니다. AJAX 호출이 발생하는 곳이 열쇠입니다. GAS는 일반적으로 "성공"이어야하는 출력 생성 오류에서 200을 제공합니다.

더 많은 디버그 정보를 얻으려면 메시지를 변경해야하지만 도메인 간 스크립팅 차단의 경우 정보가 희박할 수 있습니다 (예 : '전송 없음'). 아마 mhawksey의 픽스가 티켓이거나 JSONP 모드의 JQuery AJAX fxnality를 사용해보십시오 (docs, 특히 dataType 또는 this answer 참조).