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

谷歌表格脚本需求:实现单词频率计数累加功能

高频单词频率累加脚本优化方案

原脚本问题排查

原脚本没效果大概率是因为依赖单元格偏移获取数据的逻辑太脆弱:比如activeCell.offset(0, -2)如果拿到的不是targetSheet中对应单词的行号,后续赋值操作就会失效;另外脚本也没实现清空activeSheet对应行的需求。

简化实现脚本

下面是更可靠的方案:直接读取activeSheet当前行的单词,在targetSheet的A列精准匹配,找到后累加B列的频率值,最后清空activeSheet的当前行。

function updateWordFrequency() {
  const ui = SpreadsheetApp.getUi();
  const response = ui.alert("更新频率", "确认要更新该单词的频率并清空当前行?", ui.ButtonSet.YES_NO);
  if (response !== ui.Button.YES) return;

  // 获取工作表对象
  const activeSheet = SpreadsheetApp.getActiveSheet();
  const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("word list");
  if (!targetSheet) {
    ui.alert("错误:找不到名为'word list'的目标工作表");
    return;
  }

  // 获取当前选中行的单词(假设activeSheet中单词在A列,可根据实际调整列号)
  const currentRow = activeSheet.getActiveRange().getRow();
  const wordToUpdate = activeSheet.getRange(currentRow, 1).getValue();
  if (!wordToUpdate) {
    ui.alert("错误:当前行没有找到单词");
    return;
  }

  // 读取targetSheet的A列所有单词,查找匹配项
  const wordList = targetSheet.getRange("A:A").getValues().flat();
  const matchRowIndex = wordList.indexOf(wordToUpdate);
  if (matchRowIndex === -1) {
    ui.alert("提示:该单词不在目标列表中,请先添加新单词");
    return;
  }

  // 累加频率值(B列,行号为索引+1,因为数组从0开始)
  const targetRow = matchRowIndex + 1;
  const currentFrequency = targetSheet.getRange(targetRow, 2).getValue() || 0;
  targetSheet.getRange(targetRow, 2).setValue(currentFrequency + 1);

  // 清空activeSheet当前行的内容(根据实际需要调整清空的列范围)
  activeSheet.getRange(currentRow, 1, 1, activeSheet.getLastColumn()).clearContent();

  ui.alert("操作完成:频率已更新,当前行已清空");
}

使用说明

  1. 根据你的实际表格结构,调整脚本中单词所在列号(比如activeSheet.getRange(currentRow, 1)的1代表A列,若单词在B列就改成2)
  2. 在Google Sheets中,点击「扩展程序」→「Apps Script」,替换原脚本后保存
  3. 回到工作表,选中待处理的单词行,点击「扩展程序」→「Apps Script」中对应的函数运行即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:23:40