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

Google Sheets脚本实现逐行统计文件链接对应文档单词数

解决逐行统计Google Sheets中D列文档链接单词数并写入F列的问题

以下是修改后的脚本,实现从D4开始逐行处理,将对应文档的单词数写入同行F列:

function wordCount() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  let row = 4; // 从第4行开始处理
  
  // 循环处理每行,直到D列单元格为空
  while (true) {
    const fileUrl = sheet.getRange(`D${row}`).getValue();
    // 如果D列当前行没有内容,停止循环
    if (!fileUrl) break;
    
    try {
      // 提取Google Drive文件ID,兼容多种链接格式
      const fileIdMatch = fileUrl.match(/\/d\/([^\/]+)/);
      if (!fileIdMatch) {
        sheet.getRange(`F${row}`).setValue("无效链接");
        row++;
        continue;
      }
      const fileId = fileIdMatch[1];
      const file = DriveApp.getFileById(fileId);
      const content = file.getBlob().getDataAsString();
      
      // 统计单词数,处理空文档的情况
      const wordMatches = content.match(/\b\w+\b/g);
      const count = wordMatches ? wordMatches.length : 0;
      
      sheet.getRange(`F${row}`).setValue(count);
    } catch (e) {
      // 捕获异常并在F列写入错误提示
      sheet.getRange(`F${row}`).setValue(`错误: ${e.message}`);
    }
    
    row++;
  }
}

关键修改说明

  • 目标列修正:将原脚本中读取的E列改为D列,匹配你需要处理的文档链接列。
  • 逐行循环逻辑:从第4行开始,通过while循环遍历每行,直到D列出现空单元格时停止,实现批量逐行处理。
  • 更稳定的ID提取:使用正则表达式提取文件ID,兼容带共享参数的Drive链接(如?usp=sharing后缀),比硬切片更可靠。
  • 异常处理:添加try-catch块,处理链接无效、无文件访问权限、文件不存在等情况,避免脚本中断同时给出明确提示。
  • 空文档兼容:当文档内容为空时,避免match方法返回null导致报错,直接将单词数设为0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:05:04