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

Итак, у меня есть этот код 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 ответа


Вы можете определить глобальную переменную, используя 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, чтобы сохранить его. Просто запомните, если вы хотите получить это обратно из localalstorage, используйте JSON.parse , например так:

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


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

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

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

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

или более общий

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}));


Есть идеи?

10000