尝试通过Google App Script将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);
}
它正在接收数据,但未对其进行解析:
有没有解决这个问题,并且可以在工作表中查看数据?
提前致谢。
答案 0 :(得分:0)
我在https://ru.stackoverflow.com/找到了我的问题的答案 感谢 Alexander Ivanov
为什么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);
}