1 api urlfetch google-apps-script google-sheets-api
我对此很陌生,所以请耐心等待——我目前在从 Google 表单答案生成的 Google 表格后端有一个可操作的 Google Apps 脚本。我本质上是在 google 表单中设置一个票务表单,它将触发相应工作表中的数据通过 api 调用发送到我们的票务系统。它工作得很好,但我目前正在尝试优化它。目标是获取我使用的 json 响应:
Logger.log(response.getContentText());
它为我提供了以下信息:
Aug 9, 2020, 11:44:40 AM Info {"_url":"https://testticketingsystem.com/REST/2.0/ticket/123456","type":"ticket","id":"123456"}
并发送另一个 API 调用以将数据发送到该新工单。
这是一个代码片段:
var payload = {
"Subject": String(su),
"Content": String(as),
"Requestor": String(em),
"Queue": String(qu),
"CustomFields": {"CustomField1": String(vn), "CustomField2": String(vb), "CustomField3":
String(vg), "CustomField4": String(av), "CustomField5": String(ov), "CustomField6":
String(sd)}
}
var options = {
'method': 'post',
"contentType" : "application/json",
'payload': JSON.stringify(payload),
'muteHttpExceptions': true
}
var url = "https://testticketingsystem.com/REST/2.0/ticket?token=****************";
var response = UrlFetchApp.fetch(url,options);
Logger.log(response.getContentText());
} catch (error) {
Logger.log(error.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
创建票证后,如何编写脚本将该 ID 号作为变量使用到下一个 api 调用中?
谢谢你!
UrlFetchApp.fetch返回 a HTTPResponse,如果您期望 JSON,那么您应该能够仅使用JSON.parse()它从文本创建对象。(该JSON对象是标准 JavaScript 全局对象,例如Math;它不是 Google Apps 脚本特定的。)
如果一切顺利,您应该能够使用
var response = UrlFetchApp.fetch(url,options);
var data = JSON.parse(response.getContentText());
var id = data.id;
Run Code Online (Sandbox Code Playgroud)
然后将其用于id您的下一个fetch().
如果你的字面回应确实是
Aug 9, 2020, 11:44:40 AM Info {"_url":"https://testticketingsystem.com/REST/2.0/ticket/123456","type":"ticket","id":"123456"}
Run Code Online (Sandbox Code Playgroud)
你会遇到麻烦,直到{JSON 无效(如果你需要检查自己,请使用linter )。但我假设它是在您记录 JSON 时由控制台添加的,而不是在实际响应本身中添加的。
JSON.parse()抛出无效 JSON 的错误,因此您可以try/catch根据需要使用。
您还可以在尝试之前检查标题JSON.parse()。
这是一个检查并处理出现问题的示例。
var type = response.getHeaders()["Content-Type"];
var text = response.getContentText();
if (type === "application/json") {
try {
var data = JSON.parse(text);
} catch (error) {
return Logger.log("Invalid JSON: " + response.getContentText(text));
}
} else {
return Logger.log("expected JSON, but got response of type: " + type);
}
// if we get to this line, data is an object we can use
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7247 次 |
| 最近记录: |