غلاف Google Sheets API الأكثر شيوعًا لجافا سكريبت / تايب سكريبت
موقع المستندات - المستندات الكاملة متاحة على https://theoephraim.github.io/node-google-spreadsheet
؟ التثبيت -
pnpm i google-spreadsheet
(أوnpm i google-spreadsheet --save
أوyarn add google-spreadsheet
)
تهدف الأمثلة التالية إلى إعطائك فكرة عن بعض الأشياء التي يمكنك القيام بها
ملاحظة مهمة - لإبقاء الأمثلة موجزة، أقوم باستدعاء الانتظار في المستوى الأعلى وهو أمر غير مسموح به في بعض الإصدارات القديمة من العقدة. إذا كنت بحاجة إلى استدعاء انتظار في برنامج نصي على مستوى الجذر وبيئتك لا تدعمه، فيجب عليك بدلاً من ذلك تغليفه في وظيفة غير متزامنة كما يلي:
( 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 ( ) ;
مزيد من المعلومات:
// 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
تدعم أساليب الصف أنواع TypeScript الصريحة لشكل البيانات
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
مزيد من المعلومات:
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
مزيد من المعلومات:
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 ( ) ;
توفر هذه الوحدة غلافًا بديهيًا حول واجهة برمجة تطبيقات Google لتبسيط التفاعلات الشائعة
على الرغم من أن استخدام واجهة برمجة التطبيقات v4 Sheets من Google أسهل بكثير من الإصدار 3، إلا أن وحدة googleapis npm الرسمية هي أداة تعريفية عملاقة يتم إنشاؤها تلقائيًا والتي تتعامل مع كل منتج من منتجات Google . الوحدة وواجهة برمجة التطبيقات نفسها غير ملائمة والمستندات سيئة جدًا، على الأقل للبدء.
في أي موقف يجب عليك استخدام واجهة برمجة تطبيقات Google مباشرةً؟
تقوم هذه الوحدة بإجراء مقايضات من أجل بساطة الواجهة. توفر واجهة برمجة تطبيقات Google آلية لتقديم العديد من الطلبات بالتوازي، لذلك إذا كانت السرعة والكفاءة في غاية الأهمية لحالة الاستخدام الخاصة بك، فقد ترغب في استخدام واجهة برمجة التطبيقات الخاصة بهم مباشرة. هناك أيضًا العديد من الميزات الأقل استخدامًا لواجهة برمجة التطبيقات (API) الخاصة بهم والتي لم يتم تنفيذها هنا بعد.
تمت كتابة هذه الوحدة ويتم صيانتها بشكل نشط بواسطة ثيو إفرايم.
هل تستخدم هذه الوحدة بنشاط لمشروع تجاري؟ هل تريد المساعدة في دعمها؟
اشتري لثيو بيرة
لا شيء بعد - تواصل معنا!
نرحب بالمساهمات، ولكن يرجى اتباع الاتفاقيات الحالية، واستخدام linter، وإضافة الاختبارات ذات الصلة، وإضافة الوثائق ذات الصلة.
يتم إنشاء موقع المستندات باستخدام docify. للمعاينة والتشغيل محليًا حتى تتمكن من إجراء التعديلات، قم بتشغيل npm run docs:preview
وتوجه إلى http://localhost:3000. المحتوى موجود في ملفات تخفيض السعر في مجلد المستندات.
هذا برنامج مجاني وغير مرتبط بالمجال العام. لمزيد من المعلومات، راجع https://unlicense.org.