Javascript R谷歌表单集成

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

我想使用webhook在Google Sheet中捕获事务。我已经试过了,但对我来说并不完美。每当我运行代码时,我都会将所有数据放在一个单元格中。

好的,在您获得JSON后,我理解了结构。正如您在json中所看到的,您需要深入研究json以获得数量。像这样:

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看到我的解决方案在代码中做了一些修改后,我的问题就解决了。非常感谢您的帮助和支持。