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

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

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

Скажите, пожалуйста, как получить доступ (CREATE / EDIT / DELETE) Google Spreadsheets с помощью JavaScript или любых его фреймворков, таких как jQuery и т. Д.

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

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

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

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

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

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

  1. Как уже упоминалось в ответе Дэна Даскалеску , вы можете использовать Google Apps Script , решение JavaScript в Google . То есть, не-Node-серверные JS-приложения за пределами браузера, которые запускаются на серверах Google.
    • Вы кодируете свои приложения в редакторе кода приложения Script , и они могут получать доступ к Google Таблицам двумя способами:
      1. Служба электронных таблиц (поддержка родных объектов, руководство по использованию ); родной легче, но обычно старше, чем …
      2. Расширенное обслуживание Google Таблиц (прямой доступ к последнему API REST Google Таблиц [см. Ниже], руководство по использованию )
    • Сценарий приложений также поддерживает надстройки , и вы можете расширить функциональность пользовательского интерфейса Sheets с помощью надстроек «Листы» (например, эти )
    • Вы даже можете создавать мобильные дополнения, которые расширяют приложение «Таблицы» на Android
    • Чтобы узнать больше об использовании скриптов приложений, ознакомьтесь с этими видеороликами, которые я создал (большинство из них связано с использованием таблиц)
  2. Вы также можете использовать клиентскую библиотеку API Google для JavaScript для доступа к последнему API REST Google Таблиц на стороне клиента.
    • Вот некоторые общие примеры использования клиентской библиотеки
    • Последний API листов (v4) был выпущен в Google I / O 2016; он намного более мощный, чем все предыдущие версии, предоставляя разработчикам программный доступ к большинству функций, найденных в пользовательском интерфейсе Sheets
    • Вот быстрый запуск JavaScript для API, который поможет вам начать работу
    • Ниже приведены примеры «рецептов» (JSON) для основных запросов API
    • Если вы не «аллергия» на Python (если вы, просто притворитесь, что это псевдокод;)), я сделал несколько видеороликов с более «реальными» образцами использования API, с помощью которого вы можете учиться, и при необходимости перенести на JS (если это необходимо) ПРИМЕЧАНИЕ. Несмотря на то, что это код Python, большинство запросов API имеют JSON и легко переносятся в JS):
      1. Перенос данных SQL на лист ( запись с глубоким погружением)
      2. Форматирование текста с использованием API таблиц ( надпись на глубоком погружении)
      3. Создание слайдов из данных электронных таблиц ( пост глубокого погружения с кодом)
  3. Третий способ доступа к API Google с помощью JavaScript – из приложений Node.js, используя свою клиентскую библиотеку . Он работает аналогично использованию JavaScript-клиентской библиотеки, описанной выше, только вы будете получать доступ к тому же API со стороны сервера. Ниже приведен пример быстрого запуска Node.js для листов. Вы можете найти видео на основе Python выше, чтобы быть еще более полезными, поскольку они также получают доступ к API со стороны сервера.

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

Вот суть.

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

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

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

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


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

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

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

Это позволит вам привязать код 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; } 

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

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/

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

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/[email protected]/msg01924.html

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

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

Извините, это отвратительный ответ. Видимо, это проблема уже почти два года, поэтому не задерживайте дыхание.

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

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

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

Теперь вы можете использовать веб-интерфейсы Google Диска :

  • Ява
  • PHP
  • Javacript
  • .СЕТЬ
  • питон
  • Рубин
  • и другие…

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

Прежде всего, вам нужен ключ 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. Я бы рекомендовал использовать аксиомы .

 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 и tabletop.js

  1. пример из git
  2. другой пример
  • Используйте базовую аутентификацию с помощью jQuery и Ajax
  • У node.js эквивалент объекта window в браузере
  • Угловое 2: Как обнаружить изменения в массиве? (свойство @input)
  • В Bootstrap open Увеличить изображение в модальном
  • Получить параметры пути в response-router v4
  • Функция Async не возвращает значение, но console.log () делает: как это сделать?
  • Не правовой JSONP API - Как получить данные без параметра CALLBACK
  • json.stringify не обрабатывает методы объекта
  • Простой дроссель в js
  • Получить индекс элемента как дочернего по отношению к родительскому
  • (Встроенный) способ в JavaScript, чтобы проверить, является ли строка допустимым числом
  • Давайте будем гением компьютера.