@flink-app/google-sheets-plugin

中文文档
2.0.0-alpha.134发布于 2026/11/07MITTypeScriptCommonJS近 30 天下载 2322

使用服务账户认证读取和写入 Google 工作表的 Flink 插件

中文使用文档
文档目录5 节
  1. 先决条件
  2. 注册插件
  3. 使用量
  4. 动态全权证书
  5. AI 工具

@flink-app/google-sheets-plugin (英语)

使用服务账户认证从 Flink 应用读取并写入 Google 工作表 .

先决条件

  1. 在 谷歌云控台 ——IAM与管理 ——服务账户
  2. 启用 谷歌工作表 API 用于您的项目
  3. 与服务账户电子邮件共享电子表格( 编辑器访问)

注册插件

import { googleSheetsPlugin, GoogleSheetsPluginCtx } from "@flink-app/google-sheets-plugin";

interface AppCtx extends FlinkContext<GoogleSheetsPluginCtx> {
    repos: {};
}

new FlinkApp<AppCtx>({
    plugins: [
        googleSheetsPlugin({
            spreadsheetId: process.env.GOOGLE_SPREADSHEET_ID!,
            credentials: {
                clientEmail: process.env.GOOGLE_SERVICE_ACCOUNT_EMAIL!,
                privateKey: process.env.GOOGLE_PRIVATE_KEY!,
            },
        }),
    ],
});

私人密钥接受原始的 PEM 字符串( 有 \n)或基础64-编码服务账户JSON blob.

使用量

通过 ctx.plugins.googleSheets启用 .sheet("Title") 或者说 .sheetByIndex(n) 将操作范围改为特定工作表.

// Read all rows
const rows = await ctx.plugins.googleSheets.sheet("Tasks").getRows();
// [{ rowIndex: 0, data: { title: "Fix bug", status: "pending" } }, ...]

// Append a row
const row = await ctx.plugins.googleSheets.sheet("Tasks").appendRow({
    title: "New task",
    status: "pending",
});

// Update a row
await ctx.plugins.googleSheets.sheet("Tasks").updateRow(row.rowIndex, {
    status: "completed",
});

// Delete a row
await ctx.plugins.googleSheets.sheet("Tasks").deleteRow(row.rowIndex);

// Spreadsheet metadata
const info = await ctx.plugins.googleSheets.getInfo();
// { title, spreadsheetId, sheetCount }

行为普通对象 : { rowIndex: number, data: Record<string, string> } 其中键为列头.

动态全权证书

启动时从数据库装入证书, 而不是 env vars :

googleSheetsPlugin({
    loadCredentials: async (ctx) => {
        const config = await ctx.repos.configRepo.getOne({ key: "google" });
        return {
            credentials: {
                clientEmail: config.serviceAccountEmail,
                privateKey: config.privateKey,
            },
            spreadsheetId: config.spreadsheetId,
        };
    },
});

AI 工具

通用软件 GoogleSheetsTool 包含用于Flink代理。 它支持 getRows, (中文(简体) ), appendRow, (中文(简体) ), updateRow, (中文(简体) ), deleteRow,以及 getInfo 操作.

import GoogleSheetsTool, { Tool } from "@flink-app/google-sheets-plugin/tools/GoogleSheetsTool";

class MyAgent extends FlinkAgent<AppCtx> {
    tools = [{ ...Tool, handler: GoogleSheetsTool }];
}

版本与发布记录

@flink-app/google-sheets-plugin 共发布 75 个版本,首次发布于 2026/03/03;过去 12 个月发布了 75 个版本。

版本发布日期距今
2.0.0-alpha.134latest2026/11/078 天前
2.0.0-alpha.1332026/11/069 天前
2.0.0-alpha.1322026/11/0510 天前
2.0.0-alpha.1312026/10/2818 天前
2.0.0-alpha.1302026/10/2521 天前
2.0.0-alpha.1292026/10/2521 天前

关于 @flink-app/google-sheets-plugin 的常见问题

@flink-app/google-sheets-plugin 是什么?

使用服务账户认证读取和写入 Google 工作表的 Flink 插件

如何安装 @flink-app/google-sheets-plugin?

在项目目录运行 npm install @flink-app/google-sheets-plugin,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@flink-app/flink(>=2.0.0-alpha.134)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@flink-app/google-sheets-plugin 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@flink-app/google-sheets-plugin 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@flink-app/google-sheets-plugin 可以商用吗?

@flink-app/google-sheets-plugin 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@flink-app/google-sheets-plugin 的下载量有多少?

根据 npm 官方下载统计,@flink-app/google-sheets-plugin 在 2026/10/15 – 2026/11/13 这 30 天内被下载 2,322 次,日均约 77 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@flink-app/google-sheets-plugin 还在维护吗?

最新版本 2.0.0-alpha.134 发布于 2026/11/07(8 天前);至今共发布 75 个版本,其中过去 12 个月发布了 75 个;首次发布于 2026/03/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。