Bagaimana saya bisa mengakses spreadsheet Google Sheet hanya dengan Javascript?

101

Saya ingin mengakses Google Spreadsheets hanya menggunakan JavaScript (no .NET, C #, Java, dll.)

Saya datang ke sini dan terkejut mengetahui bahwa TIDAK ADA API untuk JavaScript untuk mengakses Google Sheets.

Tolong beri tahu saya cara mengakses (BUAT / EDIT / HAPUS) Google Sheets menggunakan JavaScript atau kerangka kerjanya seperti jQuery.

Pratik
sumber
1
tautan yang Anda berikan berisi informasi tentang menggunakan JSON. Anda harus bisa menggunakannya di JavaScript.
GSto
1
@GSto akan sangat membantu jika Anda dapat memberi saya beberapa wawasan tentang ini. Izinkan saya menelepon lagi, saya ingin mengakses spreadsheet Google melalui javascript. Terima kasih.
Pratik
1
Ini adalah tutorial lengkap developers.google.com/sheets/api/quickstart/js
FONGOH MARTIN
Mungkin ingin mempertimbangkan untuk menggunakan Sheetsu. Ini cukup sederhana untuk JSON API dan terbatas dengan versi gratisnya, tetapi ini benar-benar menyederhanakan apa yang dibutuhkan pengembang untuk menggunakan spreadsheet Google. Semoga ini bisa membantu beberapa orang.
Jester

Jawaban:

60

Saya telah membuat perpustakaan javascript sederhana yang mengambil data spreadsheet google (jika diterbitkan) melalui api JSON:

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

Anda dapat melihatnya beraksi di sini:

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

Mike McKay
sumber
3
Ini menghemat banyak waktu. Terima kasih banyak! Namun, saya memutuskan untuk membagi kode Anda, untuk dapat menangani sel data yang kosong, dan juga mengaturnya ke dalam baris (data yang dikembalikan hanya berupa larik sel raksasa, tetapi karena sel kosong tidak Mempertimbangkan, tidak ada cara mudah untuk mengatur data). Pembaruan hanya untuk metode 'callbackCells ()' Anda. Lihat ini: github.com/rw3iss/google-spreadsheet-javascript.git Terima kasih lagi man!
Ryan Weiss
5
Jawaban Evan Plaice stackoverflow.com/a/8666573/42082 memiliki informasi lebih rinci tentang API Google Docs resmi dan cara menggunakan spreadsheet. Layak untuk dilihat.
Ape-inago
versi baru API 3.0 dan Oauth 2.0
PreguntonCojoneroCabrón
Sepertinya Google mengubah kebijakan dan sekarang ini rusak.
Chirag
50

Jan 2018 UPDATE : Ketika saya menjawab pertanyaan ini tahun lalu, saya lupa menyebutkan ketiga cara untuk mengakses Google API dengan JavaScript, dan itu akan menjadi dari Node.js aplikasi menggunakan nya perpustakaan klien, jadi saya menambahkan di bawah ini.

Sekarang bulan Maret 2017 , dan sebagian besar jawaban di sini sudah usang - jawaban yang diterima sekarang mengacu pada pustaka yang menggunakan versi API yang lebih lama. Jawaban yang lebih baru: Anda hanya dapat mengakses sebagian besar Google API dengan JavaScript. Google menyediakan 3 cara untuk melakukannya hari ini:

  1. Seperti yang disebutkan dalam jawaban oleh Dan Dascalescu , Anda dapat menggunakan Google Apps Script , solusi JavaScript-dalam-awan Google. Artinya, aplikasi JS sisi server non-Node di luar browser yang berjalan di server Google.
  2. Anda juga dapat menggunakan Pustaka Klien Google API untuk JavaScript guna mengakses REST API Google Sheets terbaru di sisi klien.
    • Berikut beberapa contoh umum penggunaan pustaka klien
    • Sheets API (v4) terbaru dirilis di Google I / O 2016; ini jauh lebih kuat daripada semua versi sebelumnya, memberi pengembang akses terprogram ke sebagian besar fitur yang ditemukan di UI Spreadsheet
    • Berikut ini panduan memulai JavaScript untuk API guna membantu Anda memulai
    • Berikut adalah contoh "resep" (payload JSON) untuk permintaan API inti
    • Jika Anda tidak "alergi" terhadap Python (jika ya, anggap saja itu pseudocode;)), saya membuat beberapa video dengan lebih banyak contoh "dunia nyata" menggunakan API yang dapat Anda pelajari dan bermigrasi ke JS jika diinginkan ( CATATAN: meskipun itu kode Python, sebagian besar permintaan API memiliki JSON & mudah dibawa ke JS):
      1. Memigrasi data SQL ke Sheet (kode pos penyelaman mendalam )
      2. Memformat teks menggunakan Sheets API (code deep dive post )
      3. Menghasilkan slide dari data spreadsheet (code deep dive post )
      4. Itu dan lainnya di pustaka video Sheets API
  3. Cara ke-3 untuk mengakses Google API dengan JavaScript adalah dari aplikasi Node.js menggunakan pustaka kliennya . Cara kerjanya mirip dengan menggunakan pustaka klien JavaScript (klien) yang dijelaskan di atas, hanya Anda yang akan mengakses API yang sama dari sisi server. Berikut contoh Panduan Memulai Node.js untuk Spreadsheet. Anda mungkin menemukan video berbasis Python di atas menjadi lebih berguna karena mereka juga mengakses API dari sisi server.

Saat menggunakan REST API, Anda perlu mengelola & menyimpan kode sumber Anda serta melakukan otorisasi dengan menggulirkan kode autentikasi Anda sendiri (lihat contoh di atas). Apps Script menangani ini atas nama Anda, mengelola data (mengurangi "rasa sakit" seperti yang disebutkan oleh Ape-inago dalam jawabannya ), dan kode Anda disimpan di server Google. Tetapi fungsionalitas Anda terbatas pada layanan yang disediakan oleh App Script sedangkan REST API memberi pengembang akses yang lebih luas ke API. Tapi, hei, ada baiknya memiliki pilihan, bukan? Singkatnya, untuk menjawab pertanyaan OP asli, bukan nol, pengembang memiliki tiga cara mengakses Google Sheets menggunakan JavaScript.

wescpy
sumber
35

Inilah Intinya.

Anda dapat membuat spreadsheet menggunakan Google Sheets API . Saat ini tidak ada cara untuk menghapus spreadsheet menggunakan API (baca dokumentasi). Pikirkan API Google Dokumen sebagai rute untuk membuat dan mencari dokumen.

Anda dapat menambah / menghapus lembar kerja dalam spreadsheet menggunakan umpan berbasis lembar kerja .

Memperbarui spreadsheet dilakukan melalui feed berbasis daftar atau feed berbasis sel .

Membaca spreadsheet dapat dilakukan melalui Google Spreadsheets API yang disebutkan di atas atau, hanya untuk sheet yang diterbitkan , dengan menggunakan Bahasa Kueri API Visualisasi Google untuk meminta data (yang dapat memberikan hasil dalam format tabel CSV, JSON, atau HTML).


Lupakan jQuery. jQuery hanya benar-benar berharga jika Anda melintasi DOM. Karena GAS (Google Apps Scripting) tidak menggunakan DOM jQuery tidak akan menambah nilai pada kode Anda. Pilihlah vanila.

Saya sangat terkejut bahwa belum ada yang memberikan informasi ini sebagai jawaban. Tidak hanya dapat dilakukan, tetapi relatif mudah dilakukan dengan menggunakan vanilla JS. Satu-satunya pengecualian adalah Google Visualization API yang relatif baru (per 2011). API Visualisasi juga bekerja secara eksklusif melalui URI string kueri HTTP.

Evan Plaice
sumber
13

Ada solusi yang tidak mengharuskan seseorang untuk mempublikasikan spreadsheet. Namun, sheet tersebut harus 'Dibagikan'. Lebih khusus lagi, seseorang perlu membagikan lembar dengan cara di mana siapa pun yang memiliki tautan dapat mengakses spreadsheet. Setelah ini selesai, seseorang dapat menggunakan API HTTP Google Sheets.

Pertama, Anda memerlukan kunci Google API. Buka di sini: https://developers.google.com/places/web-service/get-api-key NB. Harap perhatikan konsekuensi keamanan dari menyediakan kunci API untuk publik: https://support.google.com/googleapi/answer/6310037

Dapatkan semua data untuk spreadsheet - peringatan, ini bisa jadi banyak data.

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

Dapatkan metadata lembar

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

Dapatkan berbagai sel

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

Sekarang dipersenjatai dengan informasi ini, seseorang dapat menggunakan AJAX untuk mengambil data dan kemudian memanipulasinya dalam JavaScript. Saya akan merekomendasikan menggunakan 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);                                                                                                                                                       
  });                
robsco
sumber
Apa itu data grid?
William Entriken
@WilliamEntriken Isi sel.
robsco
11

Pembaruan 2016 : Cara termudah adalah menggunakan API Skrip Google Apps, khususnya Layanan SpreadSheet . Ini berfungsi untuk lembar pribadi, tidak seperti jawaban lain yang memerlukan spreadsheet untuk diterbitkan.

Ini akan memungkinkan Anda mengikat kode JavaScript ke Google Sheet, dan menjalankannya saat sheet dibuka, atau saat item menu (yang dapat Anda tentukan) dipilih.

Ini Quickstart / Demo . Kodenya terlihat seperti ini:

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

Anda juga dapat menerbitkan skrip seperti aplikasi web .

Dan Dascalescu
sumber
6

edit: Ini dijawab sebelum api dokumen google dirilis. Lihat jawaban Evan Plaice dan jawaban Dan Dascalescu untuk informasi lebih terkini.

Sepertinya Anda bisa, tapi sulit digunakan. Ini melibatkan penggunaan API data Google.

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

"Pustaka klien JavaScript memiliki metode pembantu untuk Kalender, Kontak, Blogger, dan Google Finance. Namun, Anda dapat menggunakannya dengan hampir semua API Data Google untuk mengakses umpan yang diautentikasi / pribadi. Contoh ini menggunakan API DocList."

dan contoh penulisan gadget yang berinteraksi dengan spreadsheet: http://code.google.com/apis/spreadsheets/gadgets/

Kera-inago
sumber
kenapa kamu menyebutnya sebagai "sakit". apa salahnya melakukannya?
Pratik
1
Sakit karena tidak memiliki api asli, yang berarti Anda perlu melakukan banyak parsing dan manipulasi data sendiri. api spreadsheet asli akan menyediakan ini untuk Anda.
Ape-inago
4

'Mengakses JavaScript ke Google Docs' akan membosankan untuk diterapkan dan terlebih lagi dokumentasi Google juga tidak sesederhana itu untuk mendapatkannya. Saya memiliki beberapa tautan bagus untuk dibagikan yang dengannya Anda dapat memperoleh akses js ke 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/[email protected]/msg01924.html

Mungkin ini bisa membantu Anda ..

Pratik
sumber
8
link 1 tidak akan digunakan lagi Pada tanggal 20 April 2015, error link 2 404, link 3 v2.0 tidak digunakan lagi, link 4 tidak digunakan lagi
vladkras
2

Maaf, ini jawaban yang buruk. Rupanya ini telah menjadi masalah selama hampir dua tahun jadi jangan menahan nafas.

Ini adalah permintaan resmi agar Anda dapat "membintangi"

Mungkin yang paling dekat dengan Anda adalah meluncurkan layanan Anda sendiri dengan Google App Engine / Python dan mengekspos subset apa pun yang Anda butuhkan dengan pustaka JS Anda sendiri. Meskipun saya sendiri ingin memiliki solusi yang lebih baik.

mjhm
sumber
1

Untuk jenis hal ini Anda harus menggunakan Google Fusion Tables . The API dirancang untuk tujuan itu.

Tim
sumber
Bukan ide yang bagus. Google akan mematikannya. Merendahkannya.
A_01
1

Anda dapat membaca data spreadsheet Google Sheets dalam JavaScript dengan menggunakan konektor RGraph sheets:

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

Awalnya (beberapa tahun yang lalu) ini mengandalkan beberapa fungsi RGraph untuk melakukan keajaibannya - tetapi sekarang dapat bekerja secara mandiri (yaitu tidak memerlukan perpustakaan umum RGraph).

Beberapa kode contoh (contoh ini membuat bagan 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>
Richard
sumber
Dan sekarang ada versi PHP dari utilitas impor - tersedia di URL yang sama
Richard
0

Saya membangun Stein untuk membantu Anda melakukan hal itu. Ini juga menyediakan solusi HTML saja, jika Anda ingin menampilkan data langsung dari sheet. Lihat di steinhq.com .

Shiven Sinha
sumber