получить все данные нескольких листов в Google API в JS - PullRequest
1 голос
/ 06 марта 2019

Я пытаюсь получить некоторые данные из листа Google, используя JavaScript. На моем листе несколько листов. Я успешно получаю все данные для одного листа. Но мне нужно получить все данные со всех листов. Вот мой код для одного листа.

$.ajax({
    type: 'get',
    url: 'https://sheets.googleapis.com/v4/spreadsheets/{sheet_id}/values/sheet1?key={API_KEY}',
    async: false,
    success: function(response) {

    }
});

Может ли кто-нибудь помочь мне получить все данные для всей рабочей таблицы?

1 Ответ

1 голос
/ 06 марта 2019

Я думаю, что в вашей текущей ситуации вы используете метод spreadsheets.values.get API Sheets.Если вы хотите получить все значения со всех листов, например, как насчет следующих 2 шаблонов?

Шаблон 1:

В этом шаблоне он использует метод spreadsheets.get API Sheets.В этом случае все значения могут быть получены с помощью следующей конечной точки.

Конечная точка:
https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###?fields=sheets%2Fdata%2FrowData%2Fvalues%2FuserEnteredValue&key={YOUR_API_KEY}
  • Поля sheets/data/rowData/values/userEnteredValue используются для получения значений.

Pattern2:

В этом шаблоне он использует метод spreadsheets.values.batchGet API-интерфейса Sheets.В этом случае вам необходимо знать имя каждого листа, поскольку в этом методе используется имя листа.

Конечная точка:
https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###/values:batchGet?ranges=Sheet1&ranges=Sheet2&key={YOUR_API_KEY}
  • В качестве параметра запроса укажите его как ranges=Sheet1&ranges=Sheet2&....

Примечание:

  • В своем скрипте вы используете ключ API.В этом случае электронная таблица должна быть общедоступной.

Ссылки:

Если я неправильно понял ваш вопрос, я прошу прощения.

Редактировать:

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

Если я правильно понял, как насчет получения имени листа с помощью метода spreadsheets.get SheetsAPI.Конечная точка -

https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###?fields=sheets%2Fproperties%2Ftitle&key={YOUR_API_KEY}

. В этом случае sheets/properties/title используется как fields.Таким образом, все имена листов могут быть получены.Когда это отражается на вашем скрипте, как насчет этой модификации?Я думаю, что это простая модификация.Поэтому, пожалуйста, измените это в вашей ситуации.И я думаю, что есть несколько решений для вашей ситуации.Поэтому, пожалуйста, подумайте об этом как об одном из них.

Модифицированный скрипт:

$.ajax({
  type: 'get',
  url: 'https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###?fields=sheets%2Fproperties%2Ftitle&key={API_KEY}',
  async: false,
  success: function(response) {
    const queryParams = response.sheets.reduce((s, e, i) => s += "ranges=" + e.properties.title + (i < response.sheets.length - 1? "&" : ""), "");
    $.ajax({
      type: 'get',
      url: 'https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###/values:batchGet?key={API_KEY}&' + queryParams,
      async: false,
      success: function(r) {
        console.log(r)
      }
    });
  }
});
...