【问题标题】:WooCommerce webhook parsingWooCommerce webhook 解析
【发布时间】:2016-09-18 14:48:18
【问题描述】:

尝试通过 Google 应用脚本将来自 Woocommerce Webhook 的输入 JSON 解析为 Google 电子表格。

用过这个:

function doPost(request) {     

var json = request.postData.getDataAsString(); 
var obj = JSON.parse(json);     


// getting some of the Woocommerce data just as an example
// Hook was fired after order.created
var id = obj.order.id;
var orderNumber = obj.order.order_number;
var payMethod = obj.order.payment_details.method_title;    


// write data in a document, not useful, but straightforward for testing   

var doc =     DocumentApp.openById('myDocumentId');
doc.appendParagraph("Id: " + id);
doc.appendParagraph("orderNumber: " + orderNumber);
doc.appendParagraph("payMethod: " + payMethod);

}

但在 Google 表格中没有收到任何信息。


还有这个:

function doPost(request) {

  var content = JSON.parse(request.postData.contents);

  var row = [];
  for (var elem in content) {
      row.push(content[elem]);
  }

  var ss = SpreadsheetApp.openById("SHEET ID")
  var sheet = ss.getSheetByName("Sheet1");
  sheet.appendRow(row);

  var result = {"result":"ok"};

  return ContentService.createTextOutput(JSON.stringify(result))
    .setMimeType(ContentService.MimeType.JSON);
}

它正在接收数据,但它没有被解析:

有没有办法解决这个问题并使工作表中的数据可见?

提前致谢。

【问题讨论】:

    标签: php json wordpress google-apps-script woocommerce


    【解决方案1】:

    我在https://ru.stackoverflow.com/ 找到了我的问题的答案 感谢亚历山大·伊万诺夫

    woocommerce webhook 未解析的主要原因是当 WC 将其发送到电子表格宏时 JSON 无效。

    并将其作为一个元素发布{order:{}}

    所以我们需要像这样编辑代码:

    var content = JSON.parse(request.postData.contents)[0];
    

    或像这样(在我的情况下):

    var content = JSON.parse(request.postData.contents)['order'];
    

    如果我们不知道会收到什么数据,我们可能会尝试确定值:

    function doPost(request) {
      var result = {
        result: undefined
      };
      try {
        var content = JSON.parse(request.postData.contents);
        var row = [];
        if (content.hasOwnProperty('order')) {
          for (var elem in content['order']) {
            row.push(content['order'][elem]);
          }
        } else {
          row.push(request.postData.contents);
        }
        var ss = SpreadsheetApp.openById('SHEET ID')
        var sheet = ss.getSheets()[0];
        sheet.appendRow(row);
        result.result = 'ok';
      } catch (err) {
        result.result = 'err';
      }
      return ContentService.createTextOutput(JSON.stringify(result))
        .setMimeType(ContentService.MimeType.JSON);
    }
    

    【讨论】:

      猜你喜欢
      • 2016-01-07
      • 2021-05-17
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 2016-02-10
      相关资源
      最近更新 更多