You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Node.js逐行扫描Google Document及Roblox ID自动驱逐实现

解决Node.js扫描Google文档逐行读取的问题

嘿,Ross,我来帮你搞定Google文档逐行扫描的问题!要实现这个需求,核心是先通过Google Docs API拉取文档的结构化内容,再把内容转换成可逐行解析的文本格式。下面是一步步的具体实现方案:

1. 先完成Google Docs API的基础配置

  • 先去Google Cloud控制台创建一个新项目,启用Google Docs API,然后生成服务账号密钥(JSON格式)。
  • 把服务账号的邮箱地址添加到目标Google文档的协作列表中,确保它拥有文档的读取权限。
  • 安装必要的依赖包:
    npm install googleapis
    

2. 拉取文档内容并逐行扫描Roblox ID

Google Docs API返回的是结构化的文档数据,不是直接的纯文本行,所以我们需要先提取段落内容,再逐段(对应文档里的行/段落)进行扫描。这里给你一个完整的可运行示例代码:

const { google } = require('googleapis');
const fs = require('fs');

// 加载服务账号密钥文件
const auth = new google.auth.GoogleAuth({
  keyFile: 'path/to/your-service-account-key.json',
  scopes: ['https://www.googleapis.com/auth/documents.readonly'],
});

// 定义匹配Roblox ID的正则(Roblox ID为数字,通常10-15位,可根据实际调整)
const robloxIdRegex = /\b\d{10,15}\b/g;

async function scanGoogleDoc(docId) {
  try {
    const docs = google.docs({ version: 'v1', auth });
    // 获取文档的完整结构化数据
    const res = await docs.documents.get({ documentId: docId });
    const document = res.data;

    // 遍历文档中的所有内容元素
    document.body.content.forEach(element => {
      // 只处理段落类型的元素(对应文档里的行/段落)
      if (element.paragraph) {
        // 把段落中的零散文本片段拼接成完整的段落文本
        const paragraphText = element.paragraph.elements
          .map(el => el.textRun?.content || '')
          .join('');
        
        // 跳过空行
        if (!paragraphText.trim()) return;

        console.log(`扫描到内容行: ${paragraphText}`);
        
        // 匹配当前行中的所有Roblox ID
        const foundIds = paragraphText.match(robloxIdRegex);
        if (foundIds) {
          console.log(`找到Roblox ID: ${foundIds.join(', ')}`);
          // 调用你的Roblox账号处理逻辑(检查群组+驱逐)
          foundIds.forEach(id => handleRobloxAccount(id));
        }
      }
    });
  } catch (err) {
    console.error('扫描文档时出错:', err);
  }
}

// 示例:处理找到的Roblox ID(替换成你的群组检查和驱逐逻辑)
async function handleRobloxAccount(robloxId) {
  console.log(`开始处理Roblox账号: ${robloxId}`);
  // 这里可以添加Roblox API调用:
  // 1. 根据ID获取账号信息
  // 2. 检查该账号是否在指定群组列表中
  // 3. 若存在,调用驱逐接口移除账号
}

// 调用扫描函数,替换成你的Google文档ID(URL中d/后面的字符串)
scanGoogleDoc('your-target-google-document-id');

3. 关键细节说明

  • Google Docs的content数组包含了文档的所有元素(段落、图片、表格等),我们只需要筛选paragraph类型的元素来处理,每个段落对应文档中的一行或一段内容。
  • 每个段落的elements是拆分后的文本片段集合,必须拼接成完整文本后才能准确匹配Roblox ID。
  • 正则表达式\b\d{10,15}\b可以精准匹配独立的数字ID,避免误匹配其他长数字串。

额外优化建议

  • 如果文档内容很大,可以考虑分段处理或添加进度日志,避免一次性加载过多数据。
  • 把指定群组的ID存入单独的配置文件(比如group-config.json),方便后续维护和修改。
  • 调用Roblox API时要注意限流机制,必要时添加延迟或重试逻辑,避免被API限制访问。

内容的提问来源于stack exchange,提问作者Ross

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:14:13