0

我正在尝试将我在 Google Forms + App Script 中构建的应用转换为 App Maker 应用。这个应用程序通过 API 与 Pagerduty 交互。它最终会在 Pagerduty 中编辑代理的联系信息,但我构建的这个概念证明应该只是获取代理的联系信息。

当我尝试以与在 Apps 脚本中相同的方式将标头和选项添加到 URL 时,我不断收到错误消息。

错误:异常:无效参数:https://api.pagerduty.com/users/PBQHZKE/contact_methods/P6Q90HR[object%20Object] at getPagerDutyContactInfo (ServerScript:21)

我认为我在 URL 之后的对象类型错误,但我一直无法找到关于这应该是什么的文档。在这一点上,我不寻求 Pagerduty API 的任何帮助。我只是不知道如何在 App Maker 中正确地将参数添加到 URL 的末尾。

任何帮助将不胜感激。谢谢!

function getPagerDutyContactInfo() {
  var headers = {
    "Accept": "application/vnd.pagerduty+json;version=2",
    "Authorization": "Token token=<API KEY>",
  };
  var options =
    {
    "muteHttpExceptions" : true,
    "contentType" : "application/json",
    "method" : "get",
    "headers" : headers
//    "payload" : infoPD
  };
  console.log("test-gr");
  
  // Line below returns this error: Exception: Invalid argument: https://api.pagerduty.com/users/PBQHZKE/contact_methods/P6Q90HR[object%20Object] at getPagerDutyContactInfo (ServerScript:21)
  var url = "https://api.pagerduty.com/users/PBQHZKE/contact_methods/P6Q90HR" + options;
  console.log("after var URL, before fetch");
  // The line below returns a 404 error from Pagerduty
  // var url = "https://api.pagerduty.com/users/PBQHZKE/contact_methods/P6Q90HR";
  var response = UrlFetchApp.fetch(url);
  console.log("after fetch");
  return response.getContentText();
}

4

1 回答 1

0

我咨询了一位同事,他指出了我在 Java Script 中的错误。我试图将选项变量中的标题信息添加到 URL 变量的末尾。谷歌的 UrlFetchApp 在 UrlFetchApp 调用本身的逗号后期望这些。

下面的代码现在可以工作了。:)

function getPagerDutyContactInfo() {
  var headers = {
    "Accept": "application/vnd.pagerduty+json;version=2",
    "Authorization": "Token token=<API KEY>",
  };
  var options =
    {
    "muteHttpExceptions" : true,
    "contentType" : "application/json",
    "method" : "get",
    "headers" : headers
//    "payload" : infoPD
  };
  console.log("test-gr");
  
  // Line below returns this error: Exception: Invalid argument: https://api.pagerduty.com/users/PBQHZKE/contact_methods/P6Q90HR[object%20Object] at getPagerDutyContactInfo (ServerScript:21)
  var url = "https://api.pagerduty.com/users/PBQHZKE/contact_methods/P6Q90HR";
  console.log("after var URL, before fetch");
  // The line below returns a 404 error from Pagerduty
  // var url = "https://api.pagerduty.com/users/PBQHZKE/contact_methods/P6Q90HR";
  var response = UrlFetchApp.fetch(url, options);
  console.log("after fetch");
  return response.getContentText();
}

于 2018-10-05T16:30:20.203 回答