タイトルにあるように、POSTメソッドを使用してある種のJSONをGoogleAppScriptに送信できるかどうかを知りたいです。JSONが送信されると、Googleスクリプトによって処理されます。
今まで、私は3つの入力を持つ標準のhtmlフォームを使用して投稿リクエストを送信することができました(私はこのガイドに従いました:http://mashe.hawksey.info/2011/10/google-spreadsheets-as-a-database-insert- with-apps-script-form-postget-submit-method /)。ここで、jsonをgoogleスクリプトに送信するajax呼び出しに移動したいのですが、方法がわかりません。
次のような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を送信しようとしていました。
私が間違っているのは何ですか?