google-快报
最受欢迎的 谷歌工作表 API javascript/ 打字的包装
- 多个认证选项( 通过 google-auth-图书馆- 服务账户、OAuth、API密钥、ADC等
- 基于单元格的 API - 读取、写入、批量更新、格式化
- 基于行的 API - 读取,更新,删除(基于旧的 v3 行调用)
- 管理工作表 - 添加、删除、调整大小、更新属性(例如:标题),复制到同一文档或其他文档
- 管理 docs - 创建新 doc, 删除 doc, 基本共享/允许
- 导出 - 各种格式的下载工作表/文件
文档网站 - 完整的文件可用时间 https://theoephraim.github.io/node-google-spreadsheet 互联网档案馆的存檔,存档日期2013-12-12
🌈 安装 - 说吧
pnpm i google-spreadsheet
(或npm i google-spreadsheet --save或者说yarn add google-spreadsheet(中文(简体) )
实例
下面的例子是为了给你一个想法 只是一些你可以做的事情
重要说明 - 为了保持简洁的例子, 我打电话等待 最高层 在一些更古老的节点版本中不允许。 如果您需要用脚本在根位调用等待, 且您的环境不支持它, 您必须将其包装为类似 async 函数 :
(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
行方法支持清晰的数据形状类型Script
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的API的直观包装器来简化常见的相互作用
虽然Google的 v4 工作表 API 比 v3 更容易使用,但官方 googleapis npm 模块 是一个巨大的自动生成的元工具,可以处理 每个谷歌产品模块和API本身都很尴尬 文档很可怕 至少要开始.
在什么情况下你应该直接使用Google的API?
本模块为接口的简单取舍.
Google的API提供了一个并行提出许多请求的机制,因此如果速度和效率对于你的使用案例极为重要,你可能希望直接使用他们的API. 其API中还有许多使用较少的特征尚未在这里实施.
支持和贡献
这个模块是写成的,并一直由 西奥·伊法莱姆。 。 。 .
您是否在商业项目中积极使用此模块? 想帮忙支持吗?
买 西奥 啤酒
发起人
还没有 联系一下!
捐款
欢迎各方提交资料,但请遵照现行公约行事,使用网关,增加相关测试,并增加相关文件.
文件站点使用 文档化。要预览和本地运行,您可以编辑、运行 npm run docs:preview 并直接前往 http://localhost:300
内容存在于 Docs 文件夹中的 markdown 文件 .
许可证
这是自由而不受限制的公有领域软件. 关于更多信息,见 https://unlicense.org (中文(简体) )。 。 。 .