Сохранить JSON ответ как массив, который будет использоваться в вычислениях: Javascript - PullRequest
1 голос
/ 15 января 2020

Итак, у меня есть javascript код с API, который выбирает записи времени из систем управления проектами 10 000 футов.

Кажется, я не могу понять, как заставить этот код сохранить ответ JSON в массив и рассчитать общее количество для каждого пользователя.

Я также безуспешно пытался найти способ удалить конечные точки из URL, чтобы упростить изменение параметров.

function fetchSheet(accessToken) {
   var headers = {
      headers: {
         Authorization: 'Bearer ' + accessToken
      }
   }
   var response = UrlFetchApp.fetch('https://api.10000ft.com/api/v1/time_entries?from=2020-01-07&to=2020-01-08&auth=token=', headers);
   Logger.log(response.getContentText());
}

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Вы можете определить глобальную переменную, используя var, или, если вам действительно нужно какое-то время сохранить ее, вы можете сохранить эту информацию, используя свой localStorage, например: localStorage.setItem("foobar", JSON.stringify(yourArray)).

Когда это доходит до сохранения этой информации в массиве, вы можете изменить ваш выбор на что-то вроде этого:

fetch(
  'https://api.10000ft.com/api/v1/time_entries?from=2020-01-07&to=2020-01-08&auth=token=', 
  headers
).then( res => res.json()).then(data => {
  yourArray = data
})

Таким образом, вы конвертируете ответ в JSON, чтобы вы могли сохранить. Просто помните, что если вы хотите получить это обратно из хранилища, используйте JSON.parse, например:

JSON.parse(localStorage.getItem("foobar"))

1 голос
/ 15 января 2020

Кажется, я не могу понять, как заставить этот код сохранить ответ JSON в массиве и вычислить общее значение для каждого пользователя.

Вероятно, данные ответа быть строковым представлением вашего массива (или, возможно, строкой, вложенной в объект, в зависимости от того, как работает UrlFetchApp). Вы можете преобразовать строку обратно в массив, используя JSON.parse()

Я также безуспешно пытался найти способ удаления конечных точек из URL, чтобы упростить изменение параметров.

let getUrl = (from, to) => 
  `https://api.10000ft.com/api/v1/time_entries?from=${from}&to=${to}&auth=token=`;

или более универсальных c

let getUrl = (endpoint, queryParams) => 
  `${endpoint}?${Object.entries(queryParams).map(kv => kv.join('=')).join('&')}`;
  
console.log(getUrl('google.com', {q: 'my_query', date: 'today', results: 30}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...