Как я могу получить доступ к таблицам Google Sheet только с помощью Javascript?


Я хочу получить доступ к таблицам Google, используя только JavaScript. (нет .NET C#, Java)

пришел здесь и был шокирован, узнав, что нет api для JavaScript для доступа к электронной таблице Google.

пожалуйста, скажите мне,как получить доступ(создавать/редактировать/удалять) электронные таблицы Google с помощью JavaScript или любой из его фреймворков, таких как jQuery и т. д.

11 75

11 ответов:

Я создал простую библиотеку javascript, которая извлекает данные электронной таблицы google (если они опубликованы) через api JSON:

https://github.com/mikeymckay/google-spreadsheet-javascript

вы можете увидеть его в действии здесь:

http://mikeymckay.github.com/google-spreadsheet-javascript/sample.html

обновление Jan 2018: когда я ответил на этот вопрос в прошлом году, я забыл упомянуть a третий способ доступа к API Google с JavaScript, и это будет из узла.js приложения с помощью его клиентская библиотека, поэтому я добавил его ниже.

Это 2017, и большинство ответов здесь устарели - принятый ответ теперь относится к библиотеке, которая использует более старую версию API. Более актуальный ответ: вы можете получить доступ большинство API Google только с JavaScript. Google предоставляет 3 способа сделать это сегодня:

  1. как говорится в ответ дан Dascalescu, вы можете использовать Google Apps Script, решение JavaScript-in-Google-cloud. То есть, неузловые серверные приложения JS вне браузера, которые работают на серверах Google.
  2. вы также можете использовать клиентская библиотека Google API для JavaScript чтобы получить доступ к последней Google Sheets REST API на сторона клиента.
  3. 3-й способ доступа к API Google с помощью JavaScript - это из узла.js приложения с помощью своя клиентская библиотека. Он работает аналогично использованию клиентской библиотеки JavaScript (client описанный выше, только вы будете получать доступ к тому же API со стороны сервера. Вот это узел.JS Quickstart example для листов. Вы можете найти видео на основе Python выше, чтобы быть еще более полезным, поскольку они тоже получают доступ к API со стороны сервера.

при использовании REST API вам необходимо управлять и хранить исходный код, а также выполнять авторизацию, свернув свой собственный код аутентификации (см. примеры выше). Приложение скрипт обрабатывает это от вашего имени, управляя данные (уменьшение "боли", как упоминалось Ape-inago в ответ), и ваш код хранится на серверах Google. Но ваша функциональность ограничена тем, что предоставляет скрипт приложения служб, и это более старый JS (ES3 + некоторые функции ES5 и настройки Google), тогда как REST API предоставляет разработчикам гораздо более широкий доступ к API. Но эй, хорошо иметь выбор, верно? Таким образом, чтобы ответить на исходный вопрос OP, вместо нуля разработчики имеют три способы доступа к Google Sheets с помощью JavaScript.

вот суть.

вы можете создать электронную таблицу с помощью Google Sheets API. В настоящее время нет способа удалить электронную таблицу с помощью API (см. документацию). Подумайте о Google Docs API как о маршруте для создания и поиска документов.

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

обновление электронной таблицы выполняется либо через список кормит или cell based feeds.

чтение электронной таблицы может быть сделано с помощью либо Google Spreadsheets API, упомянутых выше или,только для опубликованных листов, С помощью язык запросов API визуализации Google для запроса данных (которые могут возвращать результаты в формате таблицы CSV, JSON или HTML).


забудьте jQuery. jQuery действительно ценен только в том случае, если вы пересекаете DOM. Начиная с газа (Google Apps Scripting) не использует DOM jQuery не добавит никакого значения вашему коду. Придерживайтесь ванили.

Я очень удивлен, что никто еще не предоставил эту информацию в ответе. Не только can это будет сделано, но это относительно легко сделать с помощью vanilla JS. Единственным исключением является API визуализации Google, который является относительно новым (по состоянию на 2011 год). API визуализации также работает исключительно через URI строки запроса HTTP.

обновление 2016: самый простой способ-использовать API сценариев Google Apps, в частности Служба Электронных Таблиц. Это работает для частных листов, в отличие от других ответов, которые требуют публикации электронной таблицы.

Это позволит вам привязать код JavaScript к листу Google и выполнить его при открытии листа или при выборе пункта меню (который вы можете определить).

здесь Быстрый Старт / Демо. Код выглядит так вот так:

// Let's say you have a sheet of First, Last, email and you want to return the email of the
// row the user has placed the cursor on.
function getActiveEmail() {
  var activeSheet = SpreadsheetApp.getActiveSheet();
  var activeRow = .getActiveCell().getRow();
  var email = activeSheet.getRange(activeRow, 3).getValue();

  return email;
}

вы можете публиковать такие скрипты, как веб-приложения.

edit: на это был дан ответ до того, как был выпущен api Google doc. Смотрите ответ Эвана плейса и ответ Дана Даскалеску для более современных информация.

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

http://gdatatips.blogspot.com/2008/12/using-javascript-client-library-w-non.html

" The Клиентская библиотека JavaScript имеет вспомогательные методы для календаря, контактов, блоггера и Google Finance. Однако вы можете использовать его практически с любым API данных Google для доступа к аутентифицированным/частным каналам. В этом примере используется API DocList."

и пример написания гаджета, который взаимодействует с электронными таблицами:http://code.google.com/apis/spreadsheets/gadgets/

"JavaScript доступ к Google Docs" было бы утомительно реализовать, и, кроме того, документация Google также не так проста, чтобы ее получить. У меня есть несколько хороших ссылок, по которым вы можете получить доступ js к gdoc:

http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#UploadingDocs

http://code.google.com/apis/spreadsheets/gadgets/

http://code.google.com/apis/gdata/docs/js.html

http://www.mail-archive.com/google-help-dataapi@googlegroups.com/msg01924.html

может быть это поможет вам..

для этого типа вещей вы должны использовать Таблицы Google Fusion С. Элемент API предназначен для этой цели.

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

вот официальный запрос, что вы можете "звезда"

вероятно, ближе всего вы можете прийти Роллинг свой собственный сервис с Google App Engine / Python и предоставление любого подмножества, которое вам нужно, с вашей собственной библиотекой JS. Хотя я и сам хотел бы иметь лучшее решение.

в этом быстро меняющемся мире, большинство этих ссылок являются устаревшими.

теперь вы можете использовать Google Drive Web APIs:

есть решение, которое не требует публикации электронной таблицы. Однако лист должен быть "общим". Более конкретно, нужно поделиться листом таким образом, чтобы любой, у кого есть ссылка, мог получить доступ к электронной таблице. Как только это будет сделано, можно использовать HTTP API Google Sheets.

во-первых, вам нужен ключ Google API. Голова здесь: https://developers.google.com/places/web-service/get-api-key НОТАБЕНЕ. Пожалуйста, имейте в виду последствия безопасности наличие ключа API, доступного для общественности:https://support.google.com/googleapi/answer/6310037

Get все данные для таблицы - предупреждение, это может быть много данных.

https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/?key={yourAPIKey}&includeGridData=true

получить метаданные листа

https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/?key={yourAPIKey}

получить диапазон ячеек

https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{sheetName}!{cellRange}?key={yourAPIKey}

теперь, вооружившись этой информацией, можно использовать AJAX для извлечения данных, а затем манипулировать ими в JavaScript. Я бы рекомендовал использовать axios.

var url = "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/?key={yourAPIKey}&includeGridData=true";                                                             
axios.get(url)
  .then(function (response) {
    console.log(response);                                                                                                                                                    
  })
  .catch(function (error) {
    console.log(error);                                                                                                                                                       
  });                

вы можете сделать это с помощью Sheetsee.js и столешницы.js

  1. пример из git
  2. еще один пример