【问题标题】:Sending parameters with UrlFetchApp使用 UrlFetchApp 发送参数
【发布时间】:2020-12-19 10:54:12
【问题描述】:

我试图发出 GET 请求,但根据 API 的文档,它需要额外的参数才能让我访问数据。我搜索了如何使用UrlFetch 发送params,我发现documentation 主要是关于在POST 中发送参数而不是GET 请求。

我已经在UrlFetch身份验证请求中发送Headers,但我想发送额外的参数。

那么有没有简单的方法可以做到这一点?

以下是我正在做的和想要做的示例。

我的代码:

   const someService = authorize();
  
   let response = UrlFetchApp.fetch('https://www.webSite.com/api/teams.json', {
    headers: {
      // Sending access token in the request
      Authorization: 'Bearer ' + someService.getAccessToken()
    }
  });

我想做的事

   const someService = authorize();
  
   let response = UrlFetchApp.fetch('https://www.webSite.com/api/teams.json', {
    headers: {
      Authorization: 'Bearer ' + someService.getAccessToken()
    },
    parameters:{
         'teamId': 1234
     }
      });
// URL should be like that: https://www.webSite.com/api/teams.json?access_token=1234abc&teamId=1234

【问题讨论】:

  • 您应该使用POST 还是GET 取决于您是要从网站检索数据还是将数据上传到网站。正确的身份验证方式很大程度上取决于特定的 API。看看here。使用muteHttpExceptions: true 探索您遇到的错误。
  • 这能回答你的问题吗? stackoverflow.com/a/56216818

标签: google-apps-script google-sheets google-sheets-api spreadsheet


【解决方案1】:

不幸的是,UrlFetchApp 类没有内置方法来自动从对象生成 URL 搜索参数。但是谷歌在他们的OAuth2 library 中提供了一个你可以复制的:

function sendRequest() {
  const someService = authorize();
  let baseUrl = 'https://www.webSite.com/api/teams.json';
  let params = {
    'access_token': someService.getAccessToken(),
    'teamId': 1234
  };
  let response = UrlFetchApp.fetch(buildUrl_(baseUrl, params));
}

/**
 * Builds a complete URL from a base URL and a map of URL parameters.
 * @param {string} url The base URL.
 * @param {Object.<string, string>} params The URL parameters and values.
 * @return {string} The complete URL.
 * @private
 */
function buildUrl_(url, params) {
  var paramString = Object.keys(params).map(function(key) {
    return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
  }).join('&');
  return url + (url.indexOf('?') >= 0 ? '&' : '?') + paramString;
}

【讨论】:

    猜你喜欢
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 2018-02-15
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多