Pembungkus API Google Sheets paling populer untuk javascript / skrip ketikan
Situs dokumen - Dokumen lengkap tersedia di https://theoehraim.github.io/node-google-spreadsheet
? Instalasi -
pnpm i google-spreadsheet
(ataunpm i google-spreadsheet --save
atauyarn add google-spreadsheet
)
Contoh berikut dimaksudkan untuk memberi Anda gambaran tentang beberapa hal yang dapat Anda lakukan
CATATAN PENTING - Agar contoh tetap ringkas, saya memanggil menunggu di tingkat atas yang tidak diperbolehkan di beberapa versi node.js yang lebih lama. Jika Anda perlu memanggil menunggu dalam skrip di tingkat root dan lingkungan Anda tidak mendukungnya, Anda harus membungkusnya dalam fungsi async seperti:
( async function ( ) {
await someAsyncFunction ( ) ;
} ) ( ) ;
import { GoogleSpreadsheet } from 'google-spreadsheet' ;
import { JWT } from 'google-auth-library' ;
// Initialize auth - see https://theoephraim.github.io/node-google-spreadsheet/#/guides/authentication
const serviceAccountAuth = new JWT ( {
// env var values here are copied from service account credentials generated by google
// see "Authentication" section in docs for more info
email : process . env . GOOGLE_SERVICE_ACCOUNT_EMAIL ,
key : process . env . GOOGLE_PRIVATE_KEY ,
scopes : [ 'https://www.googleapis.com/auth/spreadsheets' ] ,
} ) ;
const doc = new GoogleSpreadsheet ( '<the sheet ID from the url>' , serviceAccountAuth ) ;
await doc . loadInfo ( ) ; // loads document properties and worksheets
console . log ( doc . title ) ;
await doc . updateProperties ( { title : 'renamed doc' } ) ;
const sheet = doc . sheetsByIndex [ 0 ] ; // or use `doc.sheetsById[id]` or `doc.sheetsByTitle[title]`
console . log ( sheet . title ) ;
console . log ( sheet . rowCount ) ;
// adding / removing sheets
const newSheet = await doc . addSheet ( { title : 'another sheet' } ) ;
await newSheet . delete ( ) ;
Informasi lebih lanjut:
// if creating a new sheet, you can set the header row
const sheet = await doc . addSheet ( { headerValues : [ 'name' , 'email' ] } ) ;
// append rows
const larryRow = await sheet . addRow ( { name : 'Larry Page' , email : '[email protected]' } ) ;
const moreRows = await sheet . addRows ( [
{ name : 'Sergey Brin' , email : '[email protected]' } ,
{ name : 'Eric Schmidt' , email : '[email protected]' } ,
] ) ;
// read rows
const rows = await sheet . getRows ( ) ; // can pass in { limit, offset }
// read/write row values
console . log ( rows [ 0 ] . get ( 'name' ) ) ; // 'Larry Page'
rows [ 1 ] . set ( 'email' , '[email protected]' ) ; // update a value
rows [ 2 ] . assign ( { name : 'Sundar Pichai' , email : '[email protected]' } ) ; // set multiple values
await rows [ 2 ] . save ( ) ; // save updates on a row
await rows [ 2 ] . delete ( ) ; // delete a row
Metode baris mendukung tipe TypeScript eksplisit untuk bentuk data
type UsersRowData = {
name : string ;
email : string ;
type ?: 'admin' | 'user' ;
} ;
const userRows = await sheet . getRows < UsersRowData > ( ) ;
userRows [ 0 ] . get ( 'name' ) ; // <- TS is happy, knows it will be a string
userRows [ 0 ] . get ( 'badColumn' ) ; // <- will throw a type error
Informasi lebih lanjut:
await sheet . loadCells ( 'A1:E10' ) ; // loads range of cells into local cache - DOES NOT RETURN THE CELLS
console . log ( sheet . cellStats ) ; // total cells, loaded, how many non-empty
const a1 = sheet . getCell ( 0 , 0 ) ; // access cells using a zero-based index
const c6 = sheet . getCellByA1 ( 'C6' ) ; // or A1 style notation
// access everything about the cell
console . log ( a1 . value ) ;
console . log ( a1 . formula ) ;
console . log ( a1 . formattedValue ) ;
// update the cell contents and formatting
a1 . value = 123.456 ;
c6 . formula = '=A1' ;
a1 . textFormat = { bold : true } ;
c6 . note = 'This is a note!' ;
await sheet . saveUpdatedCells ( ) ; // save all updates in one call
Informasi lebih lanjut:
const auth = new JWT ( {
email : process . env . GOOGLE_SERVICE_ACCOUNT_EMAIL ,
key : process . env . GOOGLE_PRIVATE_KEY ,
scopes : [
'https://www.googleapis.com/auth/spreadsheets' ,
// note that sharing-related calls require the google drive scope
'https://www.googleapis.com/auth/drive.file' ,
] ,
} ) ;
// create a new doc
const newDoc = await GoogleSpreadsheet . createNewSpreadsheetDocument ( auth , { title : 'new fancy doc' } ) ;
// share with specific users, domains, or make public
await newDoc . share ( '[email protected]' ) ;
await newDoc . share ( 'mycorp.com' ) ;
await newDoc . setPublicAccessLevel ( 'reader' ) ;
// delete doc
await newDoc . delete ( ) ;
Modul ini menyediakan pembungkus intuitif di sekitar API Google untuk menyederhanakan interaksi umum
Meskipun API lembar v4 Google jauh lebih mudah digunakan daripada v3, modul resmi googleapis npm adalah alat meta raksasa yang dibuat secara otomatis yang menangani setiap produk Google . Modul dan API itu sendiri canggung dan dokumennya sangat buruk, setidaknya untuk memulai.
Dalam situasi apa Anda sebaiknya menggunakan API Google secara langsung?
Modul ini memberikan trade-off untuk kesederhanaan antarmuka. API Google menyediakan mekanisme untuk membuat banyak permintaan secara paralel, jadi jika kecepatan dan efisiensi sangat penting dalam kasus penggunaan Anda, Anda mungkin ingin menggunakan API mereka secara langsung. Ada juga banyak fitur API yang jarang digunakan namun belum diterapkan di sini.
Modul ini ditulis dan dipelihara secara aktif oleh Theo Ephraim.
Apakah Anda aktif menggunakan modul ini untuk proyek komersial? Ingin membantu mendukungnya?
Belikan Theo bir
Belum ada - hubungi kami!
Kontribusi dipersilakan, namun harap ikuti konvensi yang ada, gunakan linter, tambahkan pengujian yang relevan, dan tambahkan dokumentasi yang relevan.
Situs dokumen dibuat menggunakan docsify. Untuk melihat pratinjau dan menjalankan secara lokal sehingga Anda dapat melakukan pengeditan, jalankan npm run docs:preview
dan buka http://localhost:3000 Kontennya ada dalam file penurunan harga di folder docs.
Ini adalah perangkat lunak domain publik yang gratis dan tidak terbebani. Untuk info lebih lanjut, lihat https://unlicense.org.