Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用UrlFetchApp发送参数_Google Apps Script_Google Sheets_Google Sheets Api_Spreadsheet - Fatal编程技术网

Google apps script 使用UrlFetchApp发送参数

Google apps script 使用UrlFetchApp发送参数,google-apps-script,google-sheets,google-sheets-api,spreadsheet,Google Apps Script,Google Sheets,Google Sheets Api,Spreadsheet,我试图发出GET请求,但根据API的文档,它需要额外的参数才能访问数据。我使用UrlFetch搜索了如何发送params,找到了主要是在POST而不是GET请求中发送参数的 我已经在UrlFetch身份验证请求中发送了标题,但我想发送额外的参数 那么有没有一个简单的方法可以做到这一点 下面是我正在做和想做的一个例子 我的代码: const someService = authorize(); let response = UrlFetchApp.fetch('https://w

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

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

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

下面是我正在做和想做的一个例子

我的代码:

   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

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

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;
}
函数sendRequest(){
const someService=authorize();
让baseUrl为空https://www.webSite.com/api/teams.json';
设params={
“访问令牌”:someService.getAccessToken(),
“团队ID”:1234
};
let response=UrlFetchApp.fetch(buildUrl(baseUrl,params));
}
/**
*从基本URL和URL参数映射构建完整的URL。
*@param{string}url基本url。
*@param{Object.}params URL参数和值。
*@return{string}完整的URL。
*@私人
*/
函数buildUrl(url,参数){
var paramString=Object.keys(params).map(函数(键){
返回encodeURIComponent(键)+'='+encodeURIComponent(参数[key]);
}).加入(“&”);
返回url+(url.indexOf(“?”)>=0?“&”:“?”)+paramString;
}

您是否应该使用
POST
GET
取决于您是否希望从网站检索数据或将数据上载到网站。正确的身份验证方法在很大程度上取决于特定的API。看一看。使用
muteHttpExceptions:true
探究您遇到的错误。这是否回答了您的问题?