Google apps script 使用UrlFetchApp发送参数
我试图发出GET请求,但根据API的文档,它需要额外的参数才能访问数据。我使用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
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
探究您遇到的错误。这是否回答了您的问题?