내 스크립트가 제대로 실행되고 편집기에서 스크립트를 실행할 때 내 스프레드 시트에서 데이터를 반환 할 수 있지만 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");
}