2012-08-13 24 views
1

我想有myFunction的()發送將由doPost方法處理的有效載荷和返回基於負載的一些內容。我只能得到這些測試腳本,在任何這些情況下的工作:如何使用contentService的和doPost創建一個REST API

一)使用的doGet(),不能通過有效載荷,但得到返回的輸出符合預期。

OR

B)使用的doPost(),通過有效載荷,但得到的405代碼,而不是輸出。

我錯過了什麼?

function doPost(e) { 
    var ss = SpreadsheetApp.openById('<spreadsheet id for recording parameters>'); 
    var sheet = ss.getSheets()[0]; 
    var record; 
    for (var i in e.parameters) { 
    record = 'parameter: ' + i + ' = ' + e.parameters[i]; 
    sheet.getRange(sheet.getLastRow() + 1, 1, 1, 1).setValue(record); 
    } 
    var output = ContentService.createTextOutput(); 
    output.setContent("content to return"); 
    return output; 
} 

function myFunction() { 
    var url = '<url of above script webapp, set to anonymous, anyone>'; 
    var payload = {payloadToSend : 'string to send'}; 
    var method = 'post' 
    var response = UrlFetchApp.fetch(url, {method : method, payload: payload}).getContentText(); 
    Logger.log(response); 
    return; 
} 

回答

4

這個問題似乎是其中內容contentService的從所服務的域「script.googleusercontent.com」,這是,不允許POST方法。當您的doPost()處理返回TextOuput它發送一個重定向到客戶端,這會導致客戶端重新發送POST到script.googleusercontent.com,這是不允許的。

如果你可以使用GET那麼這將是推薦的解決方案。如果沒有,你可能需要將工作分爲兩個部分:第一個不響應發帖,然後讓檢索響應。

更新:截至2012年9月21日,現在應該修復此問題,並且您可以將POST無誤地發佈到URL。

+0

測試,並預期工作。謝謝! – Weehooey 2012-09-22 01:13:40