【发布时间】:2022-09-23 17:59:51
【问题描述】:
我将此 Google Apps 脚本绑定到工作表并作为网络应用程序发布,该应用程序充当网络挂钩来收集数据。这很好用,并且可以很好地收集脚本中的前两个结果(将数据插入工作表)。时间和完整的数据分别打包到第 1 列和第 3 列。
function doPost(e) {
var jsonString = e.postData.getDataAsString();
var event = JSON.parse(jsonString)
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(\"Data\");
var timeStamp = new Date();
var time = Utilities.formatDate(timeStamp, \"BST\", \"dd/MM/yyyy, h:mm a\");
var lastRow = sheet.getLastRow();
//Insert the data into the sheet
sheet.getRange(lastRow + 1, 1).setValue(time);
sheet.getRange(lastRow + 1, 3).setValue(event[\"data\"]);
sheet.getRange(lastRow + 1, 6).setValue(data.reference);
}
从第 3 列中的 webhook 检索到的信息在解析后就是这种格式,但我正在努力使用谷歌应用程序脚本在这个解析的 JSON 字符串数组中搜索一个元素,并希望有人能指出我正确的方向。
{processing={acquirer_reference_number=24022122407531018095, acquirer_transaction_id=57631018089}, id=pay_n4m745lnx7uy2tmgx4z26mksi, action_id=act_qqno6t6jctdkzbuk2fu3js71e, response_summary=Approved, metadata={is_supplementary=True, ps_id=9, token=tok_war7hee5nole7d21bknt45dm, transaction=7125, hash=84c478fdfbdb2515d46542adbd6ggd516dc0048fd67, order_id=83245142, sandbox=0}, amount=271.0, processed_on=2022-09-21T13:35:32Z, response_code=10000, currency=USD, reference=2694931}
我真的很想在数据中搜索这三个元素并将它们分别返回到第 4、5 和 6 列。这些出现的顺序似乎是随机的,所以我不能依赖索引:
- 金额=271.0
- 参考=2694931
- is_supplementary=真
您可以看到我尝试使用点表示法,并且我也尝试过括号表示法,但无济于事。
谢谢阅读。
-
您是否尝试过在调试模式下运行并在代码右侧的查看器中检查变量?这通常会提供一些关于数据结构的重要线索。
-
是的,我试过这个,但我只看到这个
-
错误类型错误:无法读取未定义 doPost @ Code.gs:3 的属性 \'postData\'
-
那个 Json 有问题。即使您将其粘贴到其他阅读器中,它的结构也不正确。使用 jsonviewer.stack.hu 并将您的 pull 与标准 json 进行比较,例如 pastebin.com/raw/3FJaqdJC
-
这很奇怪,我是从支付网关收集的,但我无法控制结构。您是否知道无论其结构如何都对字符串执行搜索以检索结果。也许正则表达式提取?
标签: arrays json google-apps-script webhooks