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

Ben*_*ins 5 google-apps-script

我正在尝试创建一个脚本来通过 HTTP POST 从 Ejunkie 捕获数据。当有人在 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);
}
Run Code Online (Sandbox Code Playgroud)

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

我已经尝试了几个测试事务,但我在日志中没有得到任何信息。

有任何想法吗?预先感谢您的帮助。

这是有关此主题的ejunkie 文档。

Rey*_*cia 6

不要使用 Logger.log() 作为通知自己呼叫是否接通的方式,而是尝试向自己发送电子邮件。这是片段:

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

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

如果需要的话,只需允许必要的许可即可。如果我没记错的话,Logger.log 仅适用于脚本编辑器,不适用于您的生产 Web 应用程序。


Jac*_*own 6

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

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))
}
Run Code Online (Sandbox Code Playgroud)

使用 curl 发出 post 请求并得到发送数据的回显!