Як я можу отримати доступ до електронних таблиць Google Sheet лише за допомогою Javascript?


101

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

Я прийшов сюди і був шокований тим, що дізнався, що для доступу до Google Sheets немає API API для JavaScript.

Скажіть, будь ласка, як отримати доступ до (СТВОРИТИ / редагувати / видаляти) Google Таблиць за допомогою JavaScript або будь-якої з її рамок, таких як jQuery.


1
надане вами посилання містить інформацію про використання JSON. ви повинні мати можливість використовувати це в JavaScript.
GSto

1
@GSto було б корисно, якщо ви можете надати мені деяке уявлення про це. Знову мені тел. Я хочу отримати доступ до електронної таблиці Google через javascript.Thanks.
Пратік

1
Це повний підручник developers.google.com/sheets/api/quickstart/js
FONGOH MARTIN

Можливо, варто подумати про використання Sheetsu. Для API JSON це досить просто і обмежено безкоштовною версією, але це дійсно спрощує те, що потрібно будь-якому розробнику для використання електронних таблиць Google. Сподіваюся, це допомагає деяким людям.
Шут

Відповіді:


60

Я створив просту бібліотеку javascript, яка отримує дані електронних таблиць google (якщо вони опубліковані) через api JSON:

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

Ви можете побачити його в дії тут:

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


3
Це врятувало мені тону часу. Дуже дякую! Однак я вирішив розщедрити ваш код, щоб мати змогу обробляти порожні комірки даних, а також організувати їх у рядки (дані, що повертаються, є просто гігантським масивом комірок, але оскільки порожні комірки не були зважаючи на те, що не було простого способу впорядкування даних). Оновлення було лише для вашого методу "callbackCells ()". Перевірте це: github.com/rw3iss/google-spreadsheet-javascript.git Ще раз дякую, людина!
Райан Вайс

5
Відповідь Евана камбала в stackoverflow.com/a/8666573/42082 має більш детальну інформацію про офіційному Google Docs API і як використовувати електронну таблицю один. Варто подивитися.
Апе-інаго

нова версія API 3.0 та Oauth 2.0
PreguntonCojoneroCabrón

Схоже, Google змінив політику, і це зараз порушено.
Chirag

50

ОНОВЛЕННЯ січня 2018 року . Коли я відповів на це запитання минулого року, я нехтував зазначенням третього способу доступу до API API Google за допомогою JavaScript, і це буде з додатків Node.js за допомогою його клієнтської бібліотеки, тому я додав його нижче.

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

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

Під час використання API REST вам потрібно керувати та зберігати свій вихідний код, а також виконувати авторизацію, прокручуючи власний код автентифікації (див. Зразки вище). Apps Script обробляє це від вашого імені, керуючи даними (зменшуючи "біль", як згадує Ape-inago у своїй відповіді ), а ваш код зберігається на серверах Google. Але ваша функціональність обмежена послугами App Script, тоді як API REST надає розробникам значно ширший доступ до API. Але ей, добре мати вибір, правда? Підсумовуючи це, щоб відповісти на початкове запитання ОП, замість нуля, розробники мають три способи доступу до Google Таблиць за допомогою JavaScript.


35

Ось істота.

Можна створити електронну таблицю за допомогою API Google Таблиць . Наразі немає можливості видалити електронну таблицю за допомогою API (прочитайте документацію). Розгляньте API Документів Google як маршрут створення та пошуку документів.

Ви можете додавати / видаляти робочі таблиці в електронній таблиці за допомогою каналів на основі робочого аркуша .

Оновлення електронної таблиці здійснюється за допомогою каналів на основі списку або каналів на основі комірок .

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


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

Я дуже здивований, що ще ніхто не надав цю інформацію у відповіді. Це не тільки можна зробити, але це зробити порівняно легко, використовуючи ванільний JS. Єдиним винятком є ​​API візуалізації Google, який є відносно новим (станом на 2011 рік). API візуалізації також працює виключно за допомогою URI рядка запиту HTTP.


13

Існує рішення, яке не потребує публікації електронної таблиці. Однак аркуш потрібно "ділити". Більш конкретно, потрібно ділитися аркушем таким чином, щоб кожен, хто має посилання, мав доступ до електронної таблиці. Після цього можна скористатися 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);                                                                                                                                                       
  });                

Що таке дані сітки?
Вільям Ентрікен

@WilliamEntriken Вміст комірок.
robsco

11

Оновлення 2016 року : найпростіший спосіб - використовувати API скриптів Google Apps, зокрема сервіс SpreadSheet . Це працює для приватних аркушів, на відміну від інших відповідей, які вимагають публікації електронної таблиці.

Це дозволить вам прив’язати код JavaScript до Google Sheet та виконати його, коли аркуш буде відкрито або коли вибрано пункт меню (який ви можете визначити).

Ось швидкий старт / демонстрація . Код виглядає так:

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

редагувати: На це відповіли перед випуском api google doc. Див відповіді Евана камбала в і відповідь Ден Dăscălescu в длядодаткової інформації уточненого.

Здається, ви можете, але це біль. Це передбачає використання 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/


чому ти називаєш це "болем". яка шкода при цьому?
Пратік

1
Біль, тому що у неї немає рідної верхівки, що означає, що вам потрібно зробити багато синтаксичного розбору та маніпулювання даними. рідна таблиця api надала б їх вам.
Апе-інаго

4

"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

Можливо, це допоможе тобі вийти ..


8
посилання 1 буде застарілим 20 квітня 2015 р. посилання 2 404 помилка, посилання 3 v2.0 застаріле, посилання 4 застаріле
vladkras

2

Вибачте, це хитра відповідь. Мабуть, це питання вже майже два роки, тому не затримуйте дихання.

Ось офіційний запит про те, що ви можете "зірочку"

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


2

У цьому швидко мінливому світі більшість цих посилань є застарілими.

Тепер ви можете використовувати веб-API Google Drive :



Ок, ось повний список продуктів Google, включаючи електронну таблицю (хоч легко знайти за моїм першим посиланням)
vladkras


1

Для цього типу речей слід використовувати Google Fusion Tables . API призначений для цієї мети.


Не гарна ідея. Google вимкне його. Відмовляючись від цього.
A_01

1

Ви можете читати дані електронних таблиць Google Таблиць у JavaScript за допомогою з'єднувача аркушів RGraph:

https://www.rgraph.net/canvas/docs/import-data-from-google-sheets.html

Спочатку (кілька років тому) це покладалося на деякі функції RGraph, щоб працювати над своєю магією - але тепер він може працювати окремо (тобто не вимагає загальної бібліотеки RGraph).

Деякі приклади коду (цей приклад складає діаграму RGraph):

<!-- Include the sheets library -->
<script src="RGraph.common.sheets.js"></script>

<!-- Include these two RGraph libraries to make the chart -->
<script src="RGraph.common.key.js"></script>
<script src="RGraph.bar.js"></script>

<script>
    // Create a new RGraph Sheets object using the spreadsheet's key and
    // the callback function that creates the chart. The RGraph.Sheets object is
    // passed to the callback function as an argument so it doesn't need to be
    // assigned to a variable when it's created
    new RGraph.Sheets('1ncvARBgXaDjzuca9i7Jyep6JTv9kms-bbIzyAxbaT0E', function (sheet)
    {
        // Get the labels from the spreadsheet by retrieving part of the first row
        var labels = sheet.get('A2:A7');

        // Use the column headers (ie the names) as the key
        var key = sheet.get('B1:E1');

        // Get the data from the sheet as the data for the chart
        var data   = [
            sheet.get('B2:E2'), // January
            sheet.get('B3:E3'), // February
            sheet.get('B4:E4'), // March
            sheet.get('B5:E5'), // April
            sheet.get('B6:E6'), // May
            sheet.get('B7:E7')  // June
        ];

        // Create and configure the chart; using the information retrieved above
        // from the spreadsheet
        var bar = new RGraph.Bar({
            id: 'cvs',
            data: data,
            options: {
                backgroundGridVlines: false,
                backgroundGridBorder: false,
                xaxisLabels: labels,
                xaxisLabelsOffsety: 5,
                colors: ['#A8E6CF','#DCEDC1','#FFD3B6','#FFAAA5'],
                shadow: false,
                colorsStroke: 'rgba(0,0,0,0)',
                yaxis: false,
                marginLeft: 40,
                marginBottom: 35,
                marginRight: 40,
                key: key,
                keyBoxed: false,
                keyPosition: 'margin',
                keyTextSize: 12,
                textSize: 12,
                textAccessible: false,
                axesColor: '#aaa'
            }
        }).wave();
    });
</script>

А тепер є версія PHP утиліти імпорту - доступна за тією ж URL-адресою
Річард

0

Я будую Штейна, щоб допомогти вам зробити саме це. Він також пропонує лише рішення HTML, якщо ви бажаєте відображати дані прямо з аркуша. Перевірте це на сайті steinhq.com .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.