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
相关产品推荐
相关产品推荐

