Объедините базовый URL и добавьте идентификатор в конец каждого элемента в нескольких массивах - PullRequest
0 голосов
/ 14 марта 2020

Простите, я не использовал JavaScript в течение 10 лет, и я хочу включить любые детали, которые помогут мне лучше понять.

Я хочу получать данные из внешнего API с помощью Google Scripts в Google Sheets , Вместо того, чтобы извлекать все данные, я хочу выбрать только те данные, которые я определил в массиве.

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

У меня есть базовый URL и неопределенный конец URL:

const urlBase = 'https://website/item?q';
var urlEnd = '';

Я пытался использовать join(\'=\') для каждого элемента массива.

Массив выглядит примерно так: (я хотел выводить его в разных разделах при извлечении данных)

const itemData0 = ['1da94960-5a14-4cb0-bc25-23a07ecbc915','7ecda500-745e-4275-8b4e-b883b0a28139']
const itemData1 = ['60769d56-6fe0-464f-9d6c-d2a1b6ca6e18','a53b9b6e-3671-43fe-9429-08224083bb11']
const priceData0 = ['0080307d-3596-440c-be38-bdded3cbf4cf','5ac84494-465a-424a-b36e-fe22869ba5ec']
...

URL должен в конечном итоге быть: https://website/item?q=1da94960-5a14-4cb0-bc25-23a07ecbc915

Что должно дать me,

Header: Items 0
Row0: Data1, Data1a (Each Url ID)
...

Header: Items 1
Row0: Data1, Data1a
...

Конечная точка API: (Добавление let i=o; i<array.length; i++ для каждого массива для замены URL) И сбор данных:

function getItemData() {
  let urlData = [];
  for (let i=0; i<urlEnd.length; i++) { 
  urlData[i] = [];
  urlData[i][0] = urlEnd[i].itemData0;
  urlData[i][1] = urlEnd[i].itemData1;
  urlData[i][2] = urlEnd[i].priceData0;
  urlEnd.forEach("join function")
  }

  let data = fetchJSON('https://website/item?q=' + urlData);
  let range = ssPrivateData.getRange(`A${1 + HEADER_ROWS_COUNT}:E${1 + HEADER_ROWS_COUNT + data.length - 1}`);

  let sheetData = [];
  for (let i=0; i<data.length; i++) {
    sheetData[i] = [];
    sheetData[i][0] = data[i].id;
    sheetData[i][1] = data[i].name;
    sheetData[i][2] = data[i].price;
    sheetData[i][3] = data[i].date;
    sheetData[i][4] = data[i].lastSale;
  }

  range.setValues(sheetData);

  setLastUpdateDate();
}

function fetchJSON(url) {
  try {
    var response = UrlFetchApp.fetch(url, { headers: { 'x-api-key': API_KEY }});
    var json = response.getContentText();
    var data = JSON.parse(json);
    return data;
  }
  catch(err) {
    status = err.message;
  }
  return status;
}

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

ОБНОВЛЕНИЕ

Я взял все данные вместо указанных c идентификаторов. а затем отфильтровал данные, которые не были равны определенному массиву. Посмотрите на один из ответов, я объяснил, что я сделал по-другому.

Извините, вопрос не так легко понять. надеюсь, мой ответ ниже разъясняет, что я пытался сделать. Я до сих пор не знаю, как добавить URL-адрес и добавить к нему идентификатор. Я чувствую, что фильтрация лучше, так как мне не нужно каждый раз запрашивать каждый идентификатор. Я просто делаю это один раз и игнорирую идентификаторы, которые мне не нужны.

1 Ответ

0 голосов
/ 29 марта 2020

Я отфильтровал итоговые результаты вместо добавления каждого идентификатора в URL.

var filtered_items = { 
 item_data1 : [array 1],
 item_data2 : [array 2]
};

let sheetData = [ ['header 1', 'header 2']];

var row_data = [];

for(var set_key in filtered_items) { 
row_data = [ set_key, '', '','', '','',];

sheetData.push(row_data);

for (var k in filtered_items[set_key][k] {

    for (let i=0; i<data.length; i++) {

        if (data[i].id == filtered_items[set_key][k]) {

            row_data = [
              set_key,
                  sheetData[i].id;
                  sheetData[i].name;
                  sheetData[i].price;
                  sheetData[i].date;
                  sheetData[i].lastSale;
                 ];

                 sheetData.push(row_data);

                break;

              }
         }
     }
     row_data = ['','','', '','',];

sheetData.push(row_data);

}

....
...