Javascript 如何使用UrlFetchApp获取多个页面?
我需要从Moneybird api获取所有联系人。但每页有50或100个联系人的限制 如果有下一页,则会将其添加到页眉中 ; rel=“下一步” 如何在google apps脚本中使用UrlfetchApp循环页面?还是更好的方法 谢谢你的帮助Javascript 如何使用UrlFetchApp获取多个页面?,javascript,google-apps-script,Javascript,Google Apps Script,我需要从Moneybird api获取所有联系人。但每页有50或100个联系人的限制 如果有下一页,则会将其添加到页眉中 ; rel=“下一步” 如何在google apps脚本中使用UrlfetchApp循环页面?还是更好的方法 谢谢你的帮助 function listAllContacts() { var options = { 'method': 'GET', 'contentType': 'application/json', 'muteHttpExce
function listAllContacts() {
var options = {
'method': 'GET',
'contentType': 'application/json',
'muteHttpExceptions': false,
'headers': {
'Authorization': 'Bearer ' + SERVICE.getAccessToken()
},
};
var url = 'https://moneybird.com/api/v2/'+ADMIN_ID+'/contacts.json';
var response = UrlFetchApp.fetch(url,options);
var headers = response.getAllHeaders();
var link = headers["Link"];
// Check if there is a rel='next'? then fetch next page
var data = JSON.parse(response.getContentText());
var resonseCode = JSON.parse(response.getResponseCode());
console.log(resonseCode);
console.log(data);
return data;
}```
我相信你的目标如下
- 您希望使用
URL中的循环检索所有页面https://moneybird.com/api/v2/“+ADMIN_ID+”/contacts.json
- 官方文件称“分页”如下
对返回实体列表的端点进行分页,以防止大型响应。要控制分页,可以使用page和per_page参数。页面确定要返回的页面(默认值:1),每页控制要返回的实体数量(默认值:50,最大值:100)
每个分页响应都包含一个链接头,其中包含有关上一页和下一页的信息:
注:
- 不幸的是,根据您的问题,我无法理解API中的响应值。因此,在本例中,响应值被放入
结果的数组中。关于这一点,请根据您的实际情况进行修改
- 从官方文件来看,为了减少循环次数,在URL中使用
可能会很有用每页
- 当我的猜测不正确时,您能在最后一页提供响应标题吗?通过这一点,我想确认一下
- 您希望使用
URL中的循环检索所有页面https://moneybird.com/api/v2/“+ADMIN_ID+”/contacts.json
- 官方文件称“分页”如下
对返回实体列表的端点进行分页,以防止大型响应。要控制分页,可以使用page和per_page参数。页面确定要返回的页面(默认值:1),每页控制要返回的实体数量(默认值:50,最大值:100)
每个分页响应都包含一个链接头,其中包含有关上一页和下一页的信息:
注:
- 不幸的是,根据您的问题,我无法理解API中的响应值。因此,在本例中,响应值被放入
结果的数组中。关于这一点,请根据您的实际情况进行修改
- 从官方文件来看,为了减少循环次数,在URL中使用
可能会很有用每页
- 当我的猜测不正确时,您能在最后一页提供响应标题吗?通过这一点,我想确认一下
Link: <https://moneybird.com/api/v2/contacts.json?page=3>; rel="next", <https://moneybird.com/api/v2/contacts.json?page=1>; rel="prev"
function listAllContacts() { var options = { 'method': 'GET', 'contentType': 'application/json', 'muteHttpExceptions': false, 'headers': { 'Authorization': 'Bearer ' + SERVICE.getAccessToken() }, }; var url = 'https://moneybird.com/api/v2/'+ADMIN_ID+'/contacts.json'; // I modified below script. var results = []; do { var response = UrlFetchApp.fetch(url,options); var data = JSON.parse(response.getContentText()); results.push(data); var resonseCode = JSON.parse(response.getResponseCode()); console.log(resonseCode); console.log(data); var headers = response.getAllHeaders(); var link = headers["Link"]; var checkNextUrl = link.includes("next"); if (checkNextUrl) url = link.split(";")[0].match(/<(\w.+)>/)[1]; } while (checkNextUrl); return results; }
- 不幸的是,根据您的问题,我无法理解API中的响应值。因此,在本例中,响应值被放入
- 我相信你的目标如下
- 不幸的是,根据您的问题,我无法理解API中的响应值。因此,在本例中,响应值被放入