Как я могу получить доступ к таблицам Google Sheet только с помощью Javascript? - PullRequest
92 голосов
/ 10 ноября 2010

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

Я пришел сюда и был шокирован, узнав, что API JavaScript для доступа к Google Sheets НЕТ.

Пожалуйста, скажите мне, как получить доступ (СОЗДАТЬ / РЕДАКТИРОВАТЬ / УДАЛИТЬ) к Google Sheets, используя JavaScript или любую из его платформ, таких как jQuery.

Ответы [ 13 ]

53 голосов
/ 27 января 2011

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

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

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

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

41 голосов
/ 13 марта 2017

Янв 2018 ОБНОВЛЕНИЕ : Когда я ответил на этот вопрос в прошлом году, я не упомянул о третьем способе доступа к API Google с помощью JavaScript, который был бы из приложений Node.js.используя клиентскую библиотеку , поэтому я добавил ее ниже.

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

  1. Как уже упоминалось в ответе Дана Дакалеску , вы можете использовать Google Apps Script , JavaScript-in-Google's-облачное решение.То есть не-Node серверные JS-приложения вне браузера, которые работают на серверах Google.
  2. Вы также можете использовать клиентскую библиотеку API Google для JavaScript для доступа кпоследний Google REST API на стороне клиента.
  3. Третий способ доступа к API Google с помощью JavaScript - из Node.js приложения используют свою клиентскую библиотеку .Он работает аналогично использованию клиентской библиотеки JavaScript (клиента), описанной выше, только вы получите доступ к тому же API со стороны сервера.Вот пример быстрого запуска Node.js для листов.Возможно, приведенные выше видеоролики на основе Python будут еще более полезными, поскольку они также обращаются к API со стороны сервера.

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

34 голосов
/ 29 декабря 2011

Вот суть.

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

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

Обновлениеэлектронная таблица выполняется с помощью каналов на основе списка или каналов на основе ячеек .

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


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

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

10 голосов
/ 10 февраля 2016

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

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

Вот 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;
}

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

6 голосов
/ 29 марта 2018

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

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

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

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);                                                                                                                                                       
  });                
6 голосов
/ 02 декабря 2010

edit: Ответ получен до выпуска API Google Doc.См. ответ Эвана Плайса и ответ Дана Даскалеску для получения более актуальной информации.

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

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

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

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

4 голосов
/ 08 декабря 2010

Использование JavaScript для доступа к Документам Google было бы утомительным, а кроме того, получить документацию 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

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

2 голосов
/ 24 декабря 2014

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

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

2 голосов
/ 30 сентября 2011

Для этого типа вещей вы должны использовать Google Fusion Tables . API предназначен для этой цели.

2 голосов
/ 02 декабря 2010

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

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

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

...