получить все данные нескольких рабочих листов в Google api в js

#javascript #google-sheets #google-sheets-api

#javascript #google-таблицы #google-таблицы-api #google-sheets-api

Вопрос:

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

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

    }
});
  

Кто-нибудь может мне помочь получить все данные для всего рабочего листа?

Ответ №1:

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

Шаблон 1:

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

Конечная точка:

 https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###?fields=sheets/data/rowData/values/userEnteredValueamp;key={YOUR_API_KEY}
  
  • Поля sheets/data/rowData/values/userEnteredValue используются для извлечения значений.

Шаблон 2:

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

Конечная точка:

 https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###/values:batchGet?ranges=Sheet1amp;ranges=Sheet2amp;key={YOUR_API_KEY}
  
  • В качестве параметра запроса, пожалуйста, установите его следующим образом ranges=Sheet1amp;ranges=Sheet2amp;... .

Примечание:

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

Ссылки:

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

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

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

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

 https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###?fields=sheets/properties/titleamp;key={YOUR_API_KEY}
  

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

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

 $.ajax({
  type: 'get',
  url: 'https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###?fields=sheets/properties/titleamp;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? "amp;" : ""), "");
    $.ajax({
      type: 'get',
      url: 'https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###/values:batchGet?key={API_KEY}amp;'   queryParams,
      async: false,
      success: function(r) {
        console.log(r)
      }
    });
  }
});
  

Комментарии:

1. Спасибо за ваш ответ. Но я просто не могу жестко кодировать диапазоны. Это динамично.

2. @Alauddin Ahmed Спасибо за ответ. Приношу извинения за доставленные неудобства. Я не мог понять о i just can't hard-code ranges. Its dynamic. ? Могу я спросить вас о вашей текущей проблеме? Я хотел бы решить вашу проблему. Но я прошу прощения за мой плохой уровень владения английским.

3. Я имел в виду, я не могу просто жестко запрограммировать ranges= sheet1 amp; ranges = sheet2 вот так .. имена этих рабочих листов могут измениться.

4. @Alauddin Ahmed Спасибо за ответ. Я прошу прощения за мой неполный ответ. Я мог бы понять вашу текущую проблему. Я обновил свой ответ. Не могли бы вы, пожалуйста, подтвердить это?

5. Извините, не проверил ответ.. ваш предыдущий ответ дал мне подсказку, в которой я нуждался. И я сделал то же самое с вашим текущим ответом..