Google Sayfa e-tablolarına yalnızca Javascript ile nasıl erişebilirim?


101

Google E-Tablolarına yalnızca JavaScript kullanarak erişmek istiyorum (.NET, C #, Java vb. Yok)

Ben geldim buraya ve erişim Google E JavaScript için HAYIR API olduğunu bilmek şok oldu.

Lütfen bana JavaScript veya jQuery gibi çerçevelerinden herhangi birini kullanarak (OLUŞTUR / DÜZENLE / SİL) Google Sayfalarına nasıl erişeceğimi söyle.


1
Sağladığınız bağlantı, JSON kullanımı hakkında bilgi içeriyor. bunu JavaScript'te kullanabilmelisiniz.
GSto

1
@GSto, bana bu konuda biraz fikir verebilirseniz yardımcı olur. Bana tekrar tel u u javascript aracılığıyla google elektronik tabloya erişmek istiyorum.Teşekkürler.
Pratik


Sheetsu kullanmayı düşünmek isteyebilirsiniz. JSON API için oldukça basittir ve ücretsiz sürümle sınırlıdır, ancak herhangi bir geliştiricinin Google e-tablolarını kullanmak için ihtiyaç duyduğu şeyleri gerçekten basitleştirir. Umarım bazı insanlara yardımcı olur.
Jester

Yanıtlar:


60

JSON api aracılığıyla google elektronik tablo verilerini (yayınlanmışlarsa) alan basit bir javascript kitaplığı oluşturdum:

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

Burada eylem halinde görebilirsiniz:

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


3
Bu bana çok zaman kazandırdı. Çok teşekkür ederim! Bununla birlikte, kodunuzu çatallamaya, boş veri hücrelerini işleyebilmeye ve satırlar halinde düzenlemeye karar verdim (olduğu gibi döndürülen veriler yalnızca dev bir hücre dizisidir, ancak boş hücreler olmadığından dikkate alındığında, verileri düzenlemenin kolay bir yolu yoktu). Güncelleme sadece 'callbackCells ()' yönteminiz içindi. Şuna bir göz atın: github.com/rw3iss/google-spreadsheet-javascript.git Tekrar teşekkürler dostum!
Ryan Weiss

5
Evan Plaice'in yanıtı stackoverflow.com/a/8666573/42082 , resmi Google Dokümanlar API'si ve elektronik tablo bir'in nasıl kullanılacağı hakkında daha ayrıntılı bilgi içerir. Bakmaya değer.
Ape-inago

yeni sürüm API 3.0 ve
Oauth

Görünüşe göre Google politikayı değiştirdi ve bu artık bozuldu.
Chirag

51

Ocak 2018 GÜNCELLEME : Geçen yıl bu soruyu yanıtladığımda, JavaScript ile Google API'lerine erişmenin üçüncü bir yolundan bahsetmeyi ihmal ettim ve bu , istemci kitaplığını kullanan Node.js uygulamalarından olabilir , bu yüzden aşağıya ekledim.

Bu var Mar 2017 ve cevapların çoğu burada güncelliğini yitirmiş durumda - Kabul cevabı artık eski bir API sürümü kullanan bir kütüphanedir. Daha güncel bir cevap: Çoğu Google API'sine yalnızca JavaScript ile erişebilirsiniz . Google bunu bugün yapmanın 3 yolunu sunar:

  1. Dan Dascalescu'nun yanıtında belirtildiği gibi, Google'ın bulut içinde JavaScript çözümü olan Google Apps Komut Dosyası'nı kullanabilirsiniz . Yani, Google sunucularında çalışan, tarayıcının dışındaki Düğüm olmayan sunucu tarafı JS uygulamaları.
  2. İstemci tarafında en son Google E-Tablolar REST API'sine erişmek için JavaScript için Google API'leri İstemci Kitaplığı'nı da kullanabilirsiniz .
  3. Google API'lerine JavaScript ile erişmenin üçüncü yolu , istemci kitaplığını kullanan Node.js uygulamalarından yararlanmaktır . Hemen yukarıda açıklanan JavaScript (istemci) istemci kitaplığını kullanmaya benzer şekilde çalışır, yalnızca aynı API'ye sunucu tarafından erişebilirsiniz. E-Tablolar için Node.js Hızlı Başlangıç ​​örneğini burada bulabilirsiniz . API'ye sunucu tarafından da eriştiklerinden, yukarıdaki Python tabanlı videoları daha da kullanışlı bulabilirsiniz.

REST API'yi kullanırken, kaynak kodunuzu yönetmeniz ve depolamanızın yanı sıra kendi yetkilendirme kodunuzu döndürerek yetkilendirme yapmanız gerekir (yukarıdaki örneklere bakın). Apps Komut Dosyası bunu sizin adınıza ele alır, verileri yönetir ( yanıtlarında Ape-inago'nun belirttiği "ağrıyı" azaltır ) ve kodunuz Google'ın sunucularında saklanır. Ancak işlevselliğiniz, App Script'in sağladığı hizmetlerle sınırlıdır, REST API ise geliştiricilere API'ye çok daha geniş erişim sağlar. Ama hey, seçeneklere sahip olmak güzel, değil mi? Özetle, sıfır yerine OP orijinal sorusunu yanıtlamak için, geliştiricilerin JavaScript kullanarak Google E-Tablolara erişmenin üç yolu vardır.


36

İşte Temel.

Google E-Tablolar API'sını kullanarak bir e-tablo oluşturabilirsiniz . Şu anda API kullanarak bir elektronik tabloyu silmenin bir yolu yoktur (belgeleri okuyun). Google Docs API'yi doküman oluşturma ve arama yolu olarak düşünün.

Çalışma sayfası tabanlı beslemeleri kullanarak çalışma sayfalarını elektronik tabloya ekleyebilir / kaldırabilirsiniz .

Bir elektronik tablonun güncellenmesi, liste tabanlı beslemeler veya hücre tabanlı beslemeler yoluyla yapılır .

E-tabloyu okuma, Google E API'leri yukarıda bahsedilen ya yoluyla yada edilebilir yalnızca yayınlanmış sayfalar için kullanılarak, Google Görselleştirme API'sı Sorgu Dili'ni (CSV, JSON veya HTML tablo biçiminde sonuçları döndürebilir) verilerini sorgulamak için.


JQuery'yi unutun. jQuery, yalnızca DOM’dan geçiyorsanız gerçekten değerlidir. GAS (Google Apps Komut Dosyası) DOM'u kullanmadığından jQuery, kodunuza hiçbir değer katmaz. Vanilyayı tercih edin.

Henüz kimsenin bu bilgiyi yanıtlamamasına gerçekten şaşırdım. Sadece olabilir yapılabilir, ancak vanilya JS kullanarak yapmak nispeten kolaydır. Tek istisna, nispeten yeni olan (2011 itibariyle) Google Görselleştirme API'sidir. Görselleştirme API'si ayrıca, yalnızca bir HTTP sorgu dizesi URI'si aracılığıyla çalışır.


13

Elektronik tabloyu yayınlamak için birini gerektirmeyen bir çözüm var. Ancak, sayfanın 'Paylaşılan' olması gerekir. Daha spesifik olarak, sayfayı, bağlantıya sahip olan herkesin elektronik tabloya erişebileceği şekilde paylaşması gerekir. Bu yapıldıktan sonra, Google E-Tablolar HTTP API'si kullanılabilir.

Öncelikle, bir Google API anahtarına ihtiyacınız var. Buraya gidin: https://developers.google.com/places/web-service/get-api-key NB. Lütfen herkesin kullanımına sunulan bir API anahtarına sahip olmanın güvenlik sonuçlarına dikkat edin : https://support.google.com/googleapi/answer/6310037

Bir elektronik tablo için tüm verileri alın - uyarı, bu çok fazla veri olabilir.

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

Sayfa meta verilerini alın

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

Bir dizi hücre alın

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

Şimdi bu bilgilerle donanmış bir kişi, AJAX'ı verileri almak ve ardından JavaScript'te işlemek için kullanabilir. Aksiyoları kullanmanızı tavsiye ederim .

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

Izgara verisi nedir?
William Entriken

@WilliamEntriken Hücrelerin içeriği.
robsco

11

2016 güncellemesi : En kolay yol, Google Apps Komut Dosyası API'sını, özellikle de SpreadSheet Hizmetini kullanmaktır . Bu, elektronik tablonun yayınlanmasını gerektiren diğer yanıtların aksine özel sayfalar için işe yarar.

Bu, JavaScript kodunu bir Google E-Tablosuna bağlamanıza ve sayfa açıldığında veya bir menü öğesi (tanımlayabileceğiniz) seçildiğinde çalıştırmanıza olanak tanır.

İşte bir Hızlı Başlangıç ​​/ Demo . Kod şuna benzer:

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

Bu tür komut dosyalarını web uygulamaları olarak da yayınlayabilirsiniz .


6

düzenleme: Bu, google dokümanın API'si yayınlanmadan önce yanıtlandı. Dahagüncel bilgiler için Evan Plaice'in cevabına ve Dan Dascalescu'nun cevabına bakın.

Yapabileceğin gibi görünüyor, ama kullanmak çok zor. Google veri API'sini kullanmayı içerir.

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

"JavaScript istemci kitaplığı Takvim, Kişiler, Blogger ve Google Finans için yardımcı yöntemler içerir. Ancak, bunu, kimliği doğrulanmış / özel yayınlara erişmek için hemen hemen her Google Veri API'sı ile kullanabilirsiniz. Bu örnek, DocList API'sini kullanır."

ve elektronik tablolarla arayüz oluşturan bir gadget yazma örneği: http://code.google.com/apis/spreadsheets/gadgets/


neden buna "acı" diyorsun. bunu yapmak ne zarar veriyor?
Pratik

1
Yerel bir API'ye sahip olmadığı için acı çekiyor, bu da çok fazla ayrıştırma ve veri işleme yapmanız gerektiği anlamına geliyor. yerel bir elektronik tablo API'si bunları sizin için sağlayacaktır.
Ape-inago

4

"Google Dokümanlar'a erişim JavaScript" i uygulamak sıkıcı olurdu ve dahası Google dokümantasyonunu elde etmek de o kadar kolay değil. Gdoc'a js erişimi sağlayabileceğiniz bazı iyi bağlantılarım var:

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

Belki bunlar size yardımcı olabilir ..


8
bağlantı 1 kullanımdan kaldırılacak 20 Nisan 2015 tarihinde, bağlantı 2 404 hatası, bağlantı 3 v2.0 kullanımdan kaldırıldı, bağlantı 4 kullanımdan kaldırıldı
vladkras

2

Üzgünüm, bu çok kötü bir cevap. Görünüşe göre bu neredeyse iki yıldır bir sorundu , bu yüzden nefesinizi tutmayın.

İşte "yıldız verebileceğiniz " resmi istek

Muhtemelen gelebileceğiniz en yakın şey, kendi hizmetinizi Google App Engine / Python ile kullanmak ve ihtiyacınız olan alt kümeyi kendi JS kitaplığınızla ortaya çıkarmaktır. Yine de kendim daha iyi bir çözüme sahip olmayı çok isterim.




1

Google E-Tablolar e-tablo verilerini JavaScript’te RGraph sayfaları bağlayıcısını kullanarak okuyabilirsiniz:

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

Başlangıçta (birkaç yıl önce) bu, sihrini çalıştırmak için bazı RGraph işlevlerine güveniyordu - ancak şimdi bağımsız olarak çalışabilir (yani RGraph ortak kitaplığı gerektirmez).

Bazı örnek kodlar (bu örnek bir RGraph grafiği oluşturur):

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

Ve şimdi içe aktarma yardımcı programının bir PHP sürümü var - aynı URL'de mevcut
Richard

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.