Как получить список листов в электронной таблице динамически с помощью API листов Google в React? - PullRequest
1 голос
/ 01 ноября 2019

Есть ли способ получить список всех листов в Google листе ниже? Смотри ranges=${sheet}. Приведенный ниже код получает данные с одного листа, но я хотел бы получить список листов, чтобы я мог вызывать их динамически.

const API = `https://sheets.googleapis.com/v4/spreadsheets/${sheetID}/values:batchGet?ranges=${sheet}&majorDimension=ROWS&key=${key}`;

    useEffect(()=>{
        fetch(API).then(response => response.json()).then(data => {
            console.log(data)

            let rows = data.valueRanges[0].values;

          });
    }, []);

1 Ответ

2 голосов
/ 01 ноября 2019
  • Вы хотите получить имена листов в электронной таблице, используя ключ API.
    • Вы уже знаете идентификатор электронной таблицы.
  • Электронная таблица является общедоступной.
  • Вы хотите добиться этого с помощью fetch Javascript.

Если мое понимание правильное, как насчет этого ответа?

Точка модификации:

  • Чтобы извлечь имена листов в электронной таблице,используется метод spreadsheets.get в API-интерфейсе Sheets.

Сценарий 1:

Пример сценария для получения имен листов в электронной таблице выглядит следующим образом.

const endpoint = `https://sheets.googleapis.com/v4/spreadsheets/${sheetID}?key=${key}`;
fetch(endpoint).then(response => response.json()).then(data => {
  const sheetNames = data.sheets.map(sheet => sheet.properties.title);
  console.log(sheetNames)
});

Скрипт 2:

Когда ваш скрипт модифицируется, как насчет следующей модификации? В этом измененном сценарии значения извлекаются из всех листов электронной таблицы.

const endpoint = `https://sheets.googleapis.com/v4/spreadsheets/${sheetID}?key=${key}`;
fetch(endpoint).then(response => response.json()).then(data => {
  data.sheets.forEach(s => {
    const sheetName = s.properties.title;
    const API = `https://sheets.googleapis.com/v4/spreadsheets/${sheetID}/values:batchGet?ranges=${sheetName}&majorDimension=ROWS&key=${key}`;
    fetch(API).then(response => response.json()).then(data => {
      console.log(data)

      let rows = data.valueRanges[0].values;
    });
  });
});

Сценарий 3:

В этом сценарии значения извлекаются только с 1-го листа электронной таблицы. .

fetch(endpoint).then(response => response.json()).then(data => {
  const sheetName = data.sheets[0].properties.title;
  const API = `https://sheets.googleapis.com/v4/spreadsheets/${sheetID}/values:batchGet?ranges=${sheetName}&majorDimension=ROWS&key=${key}`;
  fetch(API).then(response => response.json()).then(data => {
    console.log(data)

    let rows = data.valueRanges[0].values;
  });
});

Примечание:

  • Если вы хотите получить значения из определенного листа в электронной таблице, измените приведенный выше скрипт.

Ссылка:

Если я неправильно понял ваш вопрос и это не то направление, которое вы хотите, я приношу свои извинения.

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