#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. Извините, не проверил ответ.. ваш предыдущий ответ дал мне подсказку, в которой я нуждался. И я сделал то же самое с вашим текущим ответом..