- Вы хотите получить все имена листов в электронной таблице без ключа API и маркера доступа.
- В вашей ситуации электронная таблица является общедоступной.
Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Шаблон 1:
В этом шаблоне имена листов извлекаются веб-приложениями. Веб-приложения используются в качестве оболочки. На стороне клиента вы можете извлечь имена листов из электронной таблицы, используя веб-приложения.
Использование:
1. Создайте новый проект скрипта Google Apps.
Пример скрипта для веб-приложений - это скрипт Google Apps. Поэтому, пожалуйста, создайте проект Google Apps Script.
Если вы хотите создать его напрямую, перейдите к https://script.new/
. В этом случае, если вы не вошли в Google, откроется экран входа. Пожалуйста, войдите в Google. При этом открывается редактор сценариев Google Apps Script.
2. Скопируйте и вставьте скрипт.
Пожалуйста, скопируйте и вставьте следующий скрипт.
function doGet(e) {
var spreadsheetId = e.parameter.id;
var sheets = SpreadsheetApp.openById(spreadsheetId).getSheets();
var sheetNames = sheets.map(function(e) {return e.getSheetName()});
return ContentService.createTextOutput(JSON.stringify({sheetNames: sheetNames})).setMimeType(ContentService.MimeType.JSON);
}
3. Развертывание веб-приложений.
- В редакторе сценариев откройте диалоговое окно с помощью «Publi sh» -> «Развернуть как веб-приложение».
- Выберите «Me « для » Запустите приложение как: «.
- Выберите « Любой, даже анонимный » для « У кого есть доступ к приложению: «.
- Нажмите кнопку« Развернуть »как новую« Версия проекта ».
- Автоматически откройте диалоговое окно« Требуется авторизация ».
- Нажмите «Просмотреть разрешения».
- Выберите собственную учетную запись.
- Нажмите «Дополнительно» в разделе «Это приложение не подтверждено».
- Нажмите " Go to ### имя проекта ### (небезопасно) "
- Нажмите кнопку" Разрешить ".
- Нажмите" ОК ".
- Скопируйте URL-адрес веб-приложений. Это как
https://script.google.com/macros/s/###/exec
. - Когда вы изменили скрипт Google Apps, пожалуйста, повторно разверните его как новую версию. Этим измененный сценарий отражается в веб-приложениях. Пожалуйста, будьте осторожны.
4. Пример сценария для вашего сценария.
Чтобы извлечь имена листов из веб-приложений на стороне клиента, используйте следующий сценарий.
var url = "https://script.google.com/macros/s/###/exec?id=169AP3oaJZSMTquxtrkgFYMSp4gTApLTTWqo25qCpjL0";
fetch(url)
.then(function(response) {
return response.json();
})
.then(function(obj) {
console.log(obj.sheetNames) // You can see the sheet names as an array.
});
- Укажите URL-адрес Веб-приложения, найденные выше. В приведенном выше сценарии идентификатор таблицы отправляется с использованием параметра запроса.
- В этом случае вы можете извлечь все имена листов без использования ключа API и маркера доступа.
Шаблон 2:
В этом шаблоне имена листов извлекаются путем публикации электронной таблицы в Интернете.
Использование:
1. Publi sh Spreadsheet to Web.
Пожалуйста, опубликуйте sh Spreadsheet to Web. Ссылка
2. Пример сценария для вашего сценария.
var url = "https://spreadsheets.google.com/feeds/worksheets/169AP3oaJZSMTquxtrkgFYMSp4gTApLTTWqo25qCpjL0/public/basic?alt=json";
fetch(url)
.then(function(response) {
return response.json();
})
.then(function(obj) {
const sheetNames = obj.feed.entry.map( e => e.title["$t"]);
console.log(sheetNames) // You can see the sheet names as an array.
});
- В этом случае все имена листов могут быть непосредственно получены из электронной таблицы. Но этот шаблон использует Sheets API v3. Так что теперь вы можете подтвердить, что все имена листов могут быть получены с помощью вышеуказанного сценария. Но Sheets API v3 закрывается 3 марта 2020 года . К сожалению, я не могу рекомендовать использовать этот шаблон. Кроме того, в Sheets API v4 токен доступа и / или ключ API требуются для извлечения значений из электронной таблицы. В этом случае я думаю, что ответ iamblichus подходит.
Ссылки:
Если я неправильно понял ваш вопрос, и это было не то направление, которое вы хотите, я прошу прощения.