如標題所示,我想知道是否可以使用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