Как получить все названия вкладок google sheet из общедоступного листа без скрипта приложения

#json #google-sheets #google-sheets-api #spreadsheet

Вопрос:

Я могу анализировать данные JSON из https://spreadsheets.google.com/feeds/list/1AtYF5g2_A3AiAhejVj595bDLxO1zoGq7PNGjbdV9U8Q/od6/public/values?alt=json сюда.

Есть ли какой-либо аналогичный способ получить название всех вкладок листа?

Ответ №1:

Похоже, что ваша конечная точка используется для API листов v3. Но API Google Sheets v3 будет закрыт 8 июня 2021 года. Ref Поэтому я хотел бы предложить использовать API листов v4.

Когда электронная таблица является общедоступной, информация из электронной таблицы может быть получена методом «электронные таблицы.get» API листов v4. Но на текущем этапе для использования API листов требуется использовать ключ API. Когда ключ API не используется, возникает ошибка, подобная The request is missing a valid API key. . Поэтому, пожалуйста, будьте осторожны с этим.

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

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

 https://sheets.googleapis.com/v4/spreadsheets/1AtYF5g2_A3AiAhejVj595bDLxO1zoGq7PNGjbdV9U8Q?fields=sheets(properties(title,sheetId))amp;key={your API key}
 
  • В этом случае вы также можете получить доступ к указанной выше конечной точке с помощью браузера из-за метода GET.

Результат:

Когда запрашивается вышеуказанная конечная точка, получается следующее значение.

 {
  "sheets": [
    {
      "properties": {
        "sheetId": 0,
        "title": "Sheet1"
      }
    },
    {
      "properties": {
        "sheetId": 12345,
        "title": "Sheet2"
      }
    },
    ,
    ,
    ,
  ]
}
 

Ссылка:

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

1. Привет, Большое-большое спасибо.. Ваша конечная точка работает!!… Но я хочу знать — хочу ли я получить эти данные, игнорируя «(» первая скобка в «(свойства(заголовок,sheetId))» здесь. Возможно ли это?@ Танайке

2. @Shihab365 Спасибо, что ответили. Я рад, что ваш вопрос был решен. По поводу вашего дополнительного вопроса, в таком случае, как насчет использования sheets.properties.title в качестве полей? Это как https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}?fields=sheets.properties.titleamp;key={APIkey} . Или, если вы хотите получить как имена листов, так и идентификаторы листов, как насчет https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}?fields=sheets.properties.title,sheets.properties.sheetIdamp;key={APIkey} этого ? Если я неправильно понял ваш дополнительный вопрос, я приношу свои извинения.

3. @Shihab365 Кстати, для получения как имен листов, так и идентификаторов листов вы также можете использовать fields=sheets.properties(title,sheetId) в качестве полей.

4. @Shihab365 Спасибо, что ответили. Я рад, что ваш 2 — й вопрос также был решен. Что касается вашего 3-го вопроса, я должен извиниться за свое плохое знание английского языка. К сожалению, я не могу понять ваш 3-й вопрос. Я глубоко извиняюсь, что не могу решить все ваши вопросы. Я думаю, что мне нужно больше учиться. Итак, в этом случае я хотел бы рекомендовать опубликовать ваш 3-й вопрос в качестве нового вопроса. Таким образом, это поможет пользователям придумать решение. Когда вы можете сотрудничать, чтобы решить свой 3-й вопрос, я рад. Можете ли вы сотрудничать, чтобы сделать это?

5. @Shihab365 Спасибо, что ответили. По поводу вашего 4-го вопроса я хотел бы поддержать вас. Но проблема вашего комментария-это новая проблема, и она отличается от вашего вопроса. Итак, можете ли вы опубликовать его как новый вопрос, включив подробную информацию? Потому что, когда ваш первоначальный вопрос изменяется комментарием, другие пользователи, которые видят ваш вопрос, приходят в замешательство. Разместив его как новый вопрос, пользователи, включая меня, могут подумать об этом. Если вы можете сотрудничать, чтобы решить вашу новую проблему, я рад. Можете ли вы сотрудничать, чтобы решить свой новый вопрос?

Ответ №2:

Просто используйте конечную точку Google Drive API v4 с ограниченным количеством полей: https://sheets.googleapis.com/v4/spreadsheets/{YOUR_SPREADSHEET_ID}?fields=properties(title)amp;key={YOUR_API_KEY}

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

Результат должен выглядеть так:

 {
  "properties": {
    "title": "{YOUR_SPREADSHEET_TITLE}"
  }
}
 

Вы можете поиграть с ним в Google API explorer, прежде чем использовать его в своем коде.

Рекомендации