如标题所示,我想知道是否可以使用POST方法将某种JSON发送到Google应用程序脚本。一旦发送了JSON,它将由google脚本处理。使用POST方法发送JSON到Google App脚本
到目前为止,我管理使用标准的HTML形式具有3个输入到发送POST请求(I遵循这个指南:http://mashe.hawksey.info/2011/10/google-spreadsheets-as-a-database-insert-with-apps-script-form-postget-submit-method/)。现在,我想移动到一个Ajax调用发送一些JSON到谷歌的脚本,但我不知道如何..
使用Ajax调用是这样的:
$.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,简单文本,html等)。任何时候我运行这个脚本,这个调用都会继续进入“错误”功能,我不知道为什么。
正如我之前说,使用标准的HTML表单提交数据的作品,所以我推测的URL是好的。问题出在我发送的数据上,我想..也许,服务器端,谷歌脚本不期待任何不同于文本?
这是脚本(服务器端)的样子
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到服务器..
什么我做错了?
我忘了说谷歌脚本将来自发布请求的数据写入谷歌电子表格。 – BeNdErR
你打算从哪里进行AJAX呼叫?这是一个在Google Apps脚本之上的独立Web应用程序吗?你能描述一下你在这里的高层次分离吗? –
正如我在帖子中提到的,我尝试使用ajax提交数据而无需刷新,但遇到了跨域/ XHTTP安全问题。这里的答案http://stackoverflow.com/questions/10000020/ajax-post-to-google-spreadsheet突出显示我使用隐藏的iframe技巧,您可能会修改 – mhawksey