How do I create a doPost(e) function in Apps Scrip

2019-01-20 17:03发布

I'm trying to create a script to capture data via HTTP POST from Ejunkie. When someone makes a purchase on ejunkie, they can transmit all the order data via HTTP POST to a common notification url (documentation). I want to capture that data so I can get it into a Google Sheet.

So I've setup a sheet with a doPost(e) function like so:

// 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);
}

which I've published as a Web App with access to anyone, and then entered this script URL as the common notification URL in ejunkie.

I've tried a couple of test transactions, but I'm getting nothing in the Logs.

Any ideas? Thanks in advance for any help.

Here's the ejunkie documentation on this subject.

3条回答
SAY GOODBYE
2楼-- · 2019-01-20 17:39

Could try something like this? Also you might look @ 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));
  
}

查看更多
唯我独甜
3楼-- · 2019-01-20 17:51

Instead of using Logger.log() as a way to notify yourself if your calls made it through, try sending an email to yourself instead. This is the snippet:

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

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

Just allow the necessary permission if asked. If I'm not mistaken Logger.log is for script editor only and not for your production web apps.

查看更多
霸刀☆藐视天下
4楼-- · 2019-01-20 17:52

This is the code I used to post the data to my sheet:

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))
}

Used hurl to make a post request and got echo of the data sent!

查看更多
登录 后发表回答