google-apps-script - 如何使用谷歌应用脚本修改每个 API 请求的 JSON 数组中的值
问题描述
我正在使用 toggl 报告Toggl API
,我注意到每个请求返回的字段的最大值是 50,在文档中说,如果你想获得更多,你可以增加per_page
JSON 数组中的值,我试过了,当我执行 logger.log 时,它似乎可以工作,但实际上返回的值不会超过最初的 50
Toggl 报告 API 文档
https://github.com/toggl/toggl_api_docs/blob/master/reports/detailed.md
这就是我提出请求的方式
var baseURL = 'https://www.toggl.com';
var userToken = '40532ca98780267d0b87da9d1d983k2f'; //Insert API token here
var string = userToken +':api_token'
var headers = {'Authorization':'Basic ' + Utilities.base64Encode(string)}
var options = {'headers': headers};
var response = UrlFetchApp.fetch(baseURL + '/api/v8/me', options);
if (response.getResponseCode() != 200) {
Logger.log('API request failed');
}
var res = JSON.parse(response);
var email = 'jose@gmail.com';
var workspaces = res['data']['workspaces'];
var workspaceId = 322923;
var params = '?user_agent=' + email + '&workspace_id=' + workspaceId.toString()
var projectURL = baseURL + '/api/v8/workspaces/' + workspaceId.toString() + '/projects' + params;
var projectsFetch = UrlFetchApp.fetch(projectURL, options);
var projects = JSON.parse(projectsFetch.getContentText());
var datenow = new Date()
var firtsday = new Date(datenow.getFullYear(),datenow.getMonth(), 1)
var lastday = new Date(datenow.getFullYear(),datenow.getMonth()+1, 0)
var startDate = Utilities.formatDate(firtsday, 'MT', 'yyyy-MM-dd');
var endDate = Utilities.formatDate(lastday, 'MT', 'yyyy-MM-dd');
var params = '?user_agent=' + email + '&workspace_id=' + workspaceId.toString() + '&since=' + startDate + '&until=' + endDate;
var reportURL = baseURL + '/reports/api/v2/details' + params;
var reportFetch = UrlFetchApp.fetch(reportURL, options);
var togglReport = JSON.parse(reportFetch.getContentText());
Logger.log(togglReport['per_page']);
togglReport['per_page']
是我第二次请求时必须增加的 JSON 数组中的值,我试图增加它togglReport['per_page'] = 50;
* 这是一张看起来像 JSON 数组的图片*
解决方案
这是不可能的。togglReport
是收到的响应。修改togglReport['per_page']
不会改变已经收到的响应。
文档说
要获取下一批时间条目,您需要使用相同的参数和递增的页面参数执行新请求。不可能通过一个请求获得所有时间条目。
如果total_count
大于(即50),需要通过添加查询参数per_page
多次调用api 。page
要获取第二页,请使用?page=2
and?page=3
获取第三页,依此类推
推荐阅读
- angular - 遍历 BehaviorSubject 模板层的值
- xamarin.forms - 宽屏时 MasterDetailPage 从右到左的流向
- c++ - 为什么 std::set 容器使用比其数据大小更多的内存?
- sockets - python:发送UDP消息
- r - R,igraph:在哪里存储顶点名称更好?+ 运行时测量
- python - 从韩文文本字符串中提取一个整数,以它的内容为条件,并将其转换为 pandas 中的浮点数
- pandas - 重新索引以匹配原始列
- java - 带有异常arrayBound的线性搜索错误
- html - 使用硒的python-autologin
- javascript - XML 到 Json Nodejs