Как изменить значение из массива JSON на запрос API с помощью скрипта приложения Google - PullRequest
1 голос
/ 30 апреля 2020

Я делаю отчеты toggl, используя Toggl API, и я замечаю, что максимум полей, возвращаемых на запрос, равен 50, в документации сказано, что если вы хотите получить больше, вы должны увеличить значение * 1002. * в массиве JSON я пробовал, и когда я делаю, logger.log кажется, что он работает, но на самом деле не возвращает больше, чем начальная 50

Документация по API Toggl Report

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;

* This это рисунок, как выглядит массив JSON *

https://www.screencast.com/t/eaFAihNJBCZa

1 Ответ

1 голос
/ 30 апреля 2020

Это невозможно. togglReport - полученный ответ. Изменение togglReport['per_page'] не изменит ответ, который уже получен.

Документация гласит

Чтобы получить следующую порцию записей времени, вам нужно сделать новый запрос с теми же параметрами и увеличенным параметром page . невозможно получить все записи времени одним запросом.

Если total_count больше per_page (т. Е. 50), необходимо позвонить API несколько раз, добавив page параметр запроса. Чтобы получить вторую страницу, используйте ?page=2 и ?page=3 для третьей страницы, так что

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...