首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加油-不工作,但波斯特。

加油-不工作,但波斯特。
EN

Stack Overflow用户
提问于 2014-01-29 23:50:26
回答 1查看 155关注 0票数 0

我的脚本执行良好,当我从编辑器运行脚本时,它能够从电子表格返回数据,但是当我尝试使用cURL或Postman时,它失败了。

am能够发出一个帖子来调用doPost(e),并从给定的参数向我的电子表格中添加一个额外的行。我希望能够发出一个GET请求来调用我的doGet(e)方法,该方法以JSON的形式返回电子表格中的行(我验证了doGet在编辑器中工作)。

但是,当我尝试使用cURL或Postman发出GET时,我得到了TypeError: Cannot call method "getRange" of null.

我很困惑,因为我在脚本中根本没有调用getRange()方法,所以我不知道这个错误是从哪里来的。我将电子表格键和工作表名称硬编码到脚本中进行测试,但仍然得到相同的错误。

我已经部署了网络应用程序,以便它执行与我的谷歌帐户,我允许Anyone, even anonymous访问脚本。我已经运行了一个安装函数来使用脚本授权我的帐户。

这是我的电子表格的链接

这是我的密码:

代码语言:javascript
复制
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"); 
}
EN

回答 1

Stack Overflow用户

发布于 2014-01-30 06:09:20

刚刚发现我必须将代码重新发布为不同的版本。现在一切都正常了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21445194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档