如何在Apps Script项目中创建doPost(e)函数以从Web服务捕获HTTP POST数据?

时间:2017-03-30 19:44:00

标签: google-apps-script

我试图创建一个脚本来通过Ejunkie的HTTP POST捕获数据。当有人在ejunkie上进行购买时,他们可以通过HTTP POST将所有订单数据传输到公共通知URL(文档)。我希望捕获这些数据,以便将其放入Google表格中。

所以我设置了一个带有doPost(e)功能的工作表:

// attempt 1
function doPost(e) {
  if(typeof e !== 'undefined')
  Logger.log(e.parameters);
}

// attempt 2
function doPost(e) {
  var data = JSON.stringify(e);
  Logger.log(data);
}

我已发布为可以访问任何人的Web应用程序,然后将该脚本URL作为ejunkie中的公共通知URL输入。

我尝试过几次测试交易,但我在日志中什么都没得到。

有什么想法吗?提前感谢您的帮助。

此处有关于此主题的old faithful example

3 个答案:

答案 0 :(得分:3)

这是我用来将数据发布到我的工作表的代码:

function doPost(e) {
  Logger.log("I was called")
  if(typeof e !== 'undefined')
  Logger.log(e.parameter);
  var ss= SpreadsheetApp.openById("ID here")
  var sheet = ss.getSheetByName("Sheet2")
  sheet.getRange(1, 1).setValue(JSON.stringify(e))
  return ContentService.createTextOutput(JSON.stringify(e))
}

使用curl发出帖子请求并获得发送数据的回声!

答案 1 :(得分:1)

可以尝试这样的事吗?你也可以看看@ this thread:doPost(e) does not return parameters but doGet(e) does?



function doPost(e) {
  
  if(typeof e !== 'undefined')
    return ContentService.createTextOutput(JSON.stringify(e.parameter));
  
}




答案 2 :(得分:1)

而不是使用Logger.log()作为通知自己的方式,如果您的通话完成,请尝试sending an email给自己。这是片段:

function doPost(e) {
  if(typeof e !== 'undefined')

  MailApp.sendEmail({
     to: "youremail@gmail.com",
     subject: "Call Sucessful",
     htmlBody: "I am your <br>" +
               "DATA"
    });
}

如果被要求,请允许必要的许可。如果我没弄错,Logger.log仅适用于脚本编辑器,不适用于您的生产网络应用程序。