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

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

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

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

11 ответов


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

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

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

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


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

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

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

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


вот суть.

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

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

обновление электронной таблицы осуществляется либо через список для или каналы на основе клеток.

чтение электронной таблицы может быть сделано через Google Таблицы 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 и выполнить его при открытии листа или при выборе пункта меню (который вы можете определить).

здесь Quickstart / Demo. Код выглядит вот так:

// 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;
}

вы можете публиковать такие скрипты, как web apps.


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

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

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

"в Клиентская библиотека 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. The API предназначен для этой цели.


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

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

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


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

теперь вы можете использовать Google Drive Веб-API:


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

во-первых, вам нужен ключ 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. другой пример