API Google Sheets - автоматически получать максимальный диапазон листов

известно, что для получения значений из строк-столбцов в API листов Google формат примерно такой:

gapi.client.sheets.spreadsheets.values.get({
  spreadsheetId: id,
  range: "myData!A1:E" 
}).then(res => {
  console.info(res.result);
}, err => console.info(err));

Обратите внимание, что «диапазон» должен находиться в пределах определенных параметров, но как мне просто получить значения в максимальном диапазоне? Есть ли какое-то сокращение, например «myData! Min: Max»? Я знаю, что вы можете сделать еще один запрос, чтобы получить максимальную длину строки и столбца:

sheets.spreadsheets.get({
    spreadsheetId: id,
    ranges: [],
    auth: something
}, (err, resp) => {
    var sheetOne = resp.data.sheets[0];
    console.info(sheetOne.properties.gridProperties); // { rowCount: 1024, columnCount: 7 } (for example)
})

а затем, как только я это получу, я теоретически могу автоматически сгенерировать строку диапазона с системой переключения между буквами, чтобы получить имена букв столбцов или что-то в этом роде, и сделать еще один запрос, чтобы получить максимальное количество столбцов, но прежде всего:

  1. Может быть сложно создать функцию, которая возвращает диапазон буквенных форматов только из максимальных чисел.
  2. даже в этом случае я хотел бы получить только диапазон, в котором есть непустые значения; если у меня есть электронная таблица с 1000 строками, но я использую только первые 20 строк и столбцов, то я хочу автоматически ограничить диапазон фактическими значениями.

Любой способ сделать это с помощью API???

функция, которая возвращает диапазон буквенных форматов только из максимальных чисел Есть много способов сделать это (подробности в Google stackoverflow), но отличное решение с именами columnToLetter и letterToColumn был представлен AdamL.
Tedinoz 17.03.2019 11:07

Вы пробовали просто использовать нотацию R1C1? Также обратите внимание, что конечные пустые строки/столбцы не возвращаются согласно документации.

tehhowch 18.03.2019 14:31

Странно, что на это до сих пор нет ответа. У меня точно такой же вопрос. @tehhowch, что такое нотация R1C1? Вопрос в том, как разработчик может получить количество строк и столбцов в первую очередь, чтобы сделать эту нотацию возможной.

ariestav 24.01.2020 10:35

@aristav Погуглите, это один из двух распространенных стилей адресации электронных таблиц. ОП уже показал, как можно получить количество строк и столбцов.

tehhowch 24.01.2020 14:28

@tehhowch Спасибо за совет по гуглению, я об этом не знал :D Я думаю, что под R1C1 вы подразумеваете «обозначение A1»?

ariestav 24.01.2020 16:19

@ariestav Нет, «нотация A1» и «нотация R1C1» - это разные стили адресации электронных таблиц. Ячейка, обозначенная «F1», и ячейка, обозначенная «R1C6», являются одной и той же ячейкой.

tehhowch 25.01.2020 05:14

@tehhowch спасибо за разъяснение! очень признателен

ariestav 25.01.2020 17:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
4 480
1

Ответы 1

Чтобы вернуть все ячейки листа с именем myData, вы можете использовать myData вместо myData!A1:E:

gapi.client.sheets.spreadsheets.values.get({
    spreadsheetId: id,
    range: "myData" 
}).then(res => {
    console.info(res.result);
}, err => console.info(err));

Что касается вашего второго вопроса, насколько я знаю, нет способа получить только диапазон, в котором есть непустые значения, используя нотацию A1.

Однако вы можете перебирать значения после того, как API вернет их, чтобы определить, какие из них имеют значения.

Из https://developers.google.com/sheets/api/guides/concepts

Обозначение А1:

Для некоторых методов API требуется диапазон в нотации A1. Это строка типа Sheet1!A1:B2, которая относится к группе ячеек в электронной таблице и обычно используется в формулах. Например, допустимые диапазоны:

  • Лист1!A1:B2 относится к первым двум ячейкам в двух верхних строках Sheet1.
  • Лист1!А:А относится ко всем ячейкам в первом столбце Sheet1.
  • Лист1!1:2 относится ко всем ячейкам в первых двух строках Лист1.
  • Лист1!A5:A относится ко всем ячейкам первого столбца Листа 1, начиная с 5-го ряда.
  • А1:Б2 относится к первым двум ячейкам в двух верхних строки первого видимого листа.
  • Лист1 относится ко всем ячейкам в Лист1.

отличное объяснение! Как выбрать 2-й лист в документе?

Shajeel Afzal 17.07.2021 23:43

Если вы знаете, что лист, который вам нужен, является вторым листом в электронной таблице, и вы не знаете имя этого листа, я думаю, вы можете получить массив имен листов в электронной таблице, передав идентификатор электронной таблицы, как описано здесь: Developers.google.com/sheets/api/reference/rest/v4/spreadshe‌​ets Затем вы можете выбрать второй элемент этого массива, чтобы получить имя листа, а затем, используя это имя листа, использовать метод, описанный выше, чтобы получить диапазон.

Mark Longhurst 19.07.2021 03:36

Другие вопросы по теме