2014-01-29 6 views
0

내 스크립트가 제대로 실행되고 편집기에서 스크립트를 실행할 때 내 스프레드 시트에서 데이터를 반환 할 수 있지만 cURL 또는 Postman을 사용하려고하면 오류가 발생합니다.GAS - GET은 작동하지 않지만 POST는 수행합니다.

doPost(e)을 호출하고 지정된 매개 변수에서 추가 스프레드 시트에 POST 행을 추가 할 수있는 POST를 발행 할 수 있습니다. 내 doGet(e) 메서드를 호출하여 JSON (내 doGet이 편집기에서 작동하는지 확인)으로 내 스프레드 시트의 행을 반환하는 GET 요청을 보내고 싶습니다. 나는 컬 또는 우편 배달부를 사용하여 GET을 발행 할 때

그러나, 나는 TypeError: Cannot call method "getRange" of null.

내가 내 스크립트에 모든의 방법 getRange()를 호출하지 않기 때문에 내가 너무 나도 몰라 혼란 스러워요 얻을 이 오류는 어디에서 발생하는지. 테스트를 위해 스프레드 시트 키와 워크 시트 이름을 스크립트에 하드 코드했는데 여전히 동일한 오류가 발생합니다.

내 Google 계정으로 실행되도록 웹 앱을 배포했으며 Anyone, even anonymous에서 스크립트에 액세스 할 수 있습니다. 스크립트로 내 계정을 인증하는 설정 기능을 실행했습니다.

여기 내 스프레드 시트에 link이 있습니다. 나는 다른 버전으로 코드를 게시해야한다는

function doGet(e) { 
var ss = SpreadsheetApp.openById("0AvXqpv9dPoVfdHRzRUkxMS1qVkpwaEJDSk44RXpZUVE"); 
var sheet = ss.getSheetByName("Clouds"); 

var rows = sheet.getDataRange(); 
var numRows = rows.getNumRows(); 
var values = rows.getValues(); 

var json = JSON.stringify(values); 
Logger.log(json); 

return json; 
}; 

function doPost(e) { 
var ss = SpreadsheetApp.openById("0AvXqpv9dPoVfdHRzRUkxMS1qVkpwaEJDSk44RXpZUVE"); 
//var sheet = ss.getSheetByName(e.parameter["sheetID"]); 
var sheet = ss.getSheetByName("Clouds"); 

//Logger.log("sheetId: " + e.parameter["sheetID"]); 
Logger.log("request: " + e); 

//check if sheet exists, if not add sheet 
if (sheet == null) { 
    Logger.log("Creating new sheet..."); 
    //inserts sheet with specified ID, updates sheet var, appends a header row and then locks it 
    ss.insertSheet(e.parameter["sheetID"]); 
    sheet = ss.getSheetByName(e.parameter["sheetID"]); 
    sheet.appendRow(["ID","Coverage","Date", "Time", "Comments", "kWhr", "mL Water"]); 
    sheet.setFrozenRows(1); 
} 
//Append the 3 inputs to the sheet 
//If statement takes care of whether the user is using the GET or POST functions, GET will have different parameter id's 

if (e == null || e.parameter["id"] == undefined){ 
Logger.log("getting data"); 
return ContentService.createTextOutput("Successful GET"); 
//doPost(e); 
} 
else { 
Logger.log("Appending row..."); 
sheet.appendRow([ 
    e.parameter["id"], 
    e.parameter["coverage"], 
    e.parameter["date"], 
    e.parameter["time"], 
    e.parameter["comments"], 
    e.parameter["kwhr"], 
    e.parameter["ml"] 
]); 
} 

//Returns a string to be displayed (If nothing is return you get a Google page saying the script worked and nothing was returned) 
return ContentService.createTextOutput("Successfully Submitted. You may close the application"); 
} 

답변

0

그냥 발견 :

여기 내 코드입니다. 이제 모든 것이 작동합니다.

관련 문제