Javascript R谷歌表单集成
我想使用webhook在Google Sheet中捕获事务。我已经试过了,但对我来说并不完美。每当我运行代码时,我都会将所有数据放在一个单元格中。好的,在您获得JSON后,我理解了结构。正如您在json中所看到的,您需要深入研究json以获得数量。像这样:Javascript R谷歌表单集成,javascript,google-apps-script,google-sheets,razorpay,Javascript,Google Apps Script,Google Sheets,Razorpay,我想使用webhook在Google Sheet中捕获事务。我已经试过了,但对我来说并不完美。每当我运行代码时,我都会将所有数据放在一个单元格中。好的,在您获得JSON后,我理解了结构。正如您在json中所看到的,您需要深入研究json以获得数量。像这样: const dig = myData.payload.payment.entity; const amount = dig.amount 因此,如果您想要银行交易id,您将获得: const bankTransferId = dig.acq
const dig = myData.payload.payment.entity;
const amount = dig.amount
因此,如果您想要银行交易id,您将获得:
const bankTransferId = dig.acquirer_data.bank_transaction_id;
我希望这有意义?正如您所看到的,发布了awnser和一个测试函数,因此您可以自己尝试和测试,通过控制台日志您可以检查您的工作。在屏幕截图中可以看到调试器,在那里可以看到JSON树;)
解决方案:
function doGet(e) {
return HtmlService.createHtmlOutput("request received");
}
function doPost(e) {
const params = JSON.stringify(e.postData.contents);
const myData = JSON.parse(params);
const ts = Utilities.formatDate(new Date(), "GMT+5:30", "dd/MM/YYYY");
const dig = myData.payload.payment.entity;
const row = [ts,params,myData.id,dig.amount,dig.status,dig.method,dig.vpa,dig.email,dig.contact];
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data")
sheet.getRange(sheet.getLastRow()+1, 1, 1, row.length).setValues([row]);
SpreadsheetApp.flush();
return HtmlService.createHtmlOutput("post request received");
};
function test(){
const raw =
{
"entity": "event",
"account_id": "acc_BFQ7uQEaa7j2z7",
"event": "payment.authorized",
"contains": [
"payment"
],
"payload": {
"payment": {
"entity": {
"id": "pay_DESlfW9H8K9uqM",
"entity": "payment",
"amount": 100,
"currency": "INR",
"status": "authorized",
"order_id": "order_DESlLckIVRkHWj",
"invoice_id": null,
"international": false,
"method": "netbanking",
"amount_refunded": 0,
"refund_status": null,
"captured": false,
"description": null,
"card_id": null,
"bank": "HDFC",
"wallet": null,
"vpa": null,
"email": "gaurav.kumar@example.com",
"contact": "+919876543210",
"notes": [],
"fee": null,
"tax": null,
"error_code": null,
"error_description": null,
"error_source": null,
"error_step": null,
"error_reason": null,
"acquirer_data": {
"bank_transaction_id": "0125836177"
},
"created_at": 1567674599
}
}
},
"created_at": 1567674606
};
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName("Data");
const string = JSON.stringify(raw);
const myData = JSON.parse(string);
const dig = myData.payload.payment.entity;
const ts = Utilities.formatDate(new Date(), "GMT+5:30", "dd/MM/YYYY");
const row = [ts,myData.id,dig.amount,dig.status,dig.method,dig.vpa,dig.email,dig.contact];
console.log(dig.email);
sh.getRange(sh.getLastRow()+1, 1, 1, row.length).setValues([row]);
}
测试:
function doGet(e) {
return HtmlService.createHtmlOutput("request received");
}
function doPost(e) {
const params = JSON.stringify(e.postData.contents);
const myData = JSON.parse(params);
const ts = Utilities.formatDate(new Date(), "GMT+5:30", "dd/MM/YYYY");
const dig = myData.payload.payment.entity;
const row = [ts,params,myData.id,dig.amount,dig.status,dig.method,dig.vpa,dig.email,dig.contact];
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data")
sheet.getRange(sheet.getLastRow()+1, 1, 1, row.length).setValues([row]);
SpreadsheetApp.flush();
return HtmlService.createHtmlOutput("post request received");
};
function test(){
const raw =
{
"entity": "event",
"account_id": "acc_BFQ7uQEaa7j2z7",
"event": "payment.authorized",
"contains": [
"payment"
],
"payload": {
"payment": {
"entity": {
"id": "pay_DESlfW9H8K9uqM",
"entity": "payment",
"amount": 100,
"currency": "INR",
"status": "authorized",
"order_id": "order_DESlLckIVRkHWj",
"invoice_id": null,
"international": false,
"method": "netbanking",
"amount_refunded": 0,
"refund_status": null,
"captured": false,
"description": null,
"card_id": null,
"bank": "HDFC",
"wallet": null,
"vpa": null,
"email": "gaurav.kumar@example.com",
"contact": "+919876543210",
"notes": [],
"fee": null,
"tax": null,
"error_code": null,
"error_description": null,
"error_source": null,
"error_step": null,
"error_reason": null,
"acquirer_data": {
"bank_transaction_id": "0125836177"
},
"created_at": 1567674599
}
}
},
"created_at": 1567674606
};
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName("Data");
const string = JSON.stringify(raw);
const myData = JSON.parse(string);
const dig = myData.payload.payment.entity;
const ts = Utilities.formatDate(new Date(), "GMT+5:30", "dd/MM/YYYY");
const row = [ts,myData.id,dig.amount,dig.status,dig.method,dig.vpa,dig.email,dig.contact];
console.log(dig.email);
sh.getRange(sh.getLastRow()+1, 1, 1, row.length).setValues([row]);
}
你好谢谢你的帮助,但问题还是一样。我只在同一个单元格中获取所有数据,如上图所示。仔细看,似乎需要深入研究json。如果能发布真实的文本,我会很高兴,然后我可以将其格式化为可读性好的json来帮助您。@Sumitsing看到我的解决方案在代码中做了一些修改后,我的问题就解决了。非常感谢您的帮助和支持。