调用外部源的服务器脚本返回对象错误

时间:2018-10-05 14:41:46

标签: google-app-maker

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

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

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

我认为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();
}

1 个答案:

答案 0 :(得分:0)

我咨询了一位同事,他指出了Java脚本中的错误。我试图将我的标头信息添加到options变量中到URL变量的末尾。 Google的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();
}