为什么我的 Google 表格字数统计自定义功能不起作用?

Why doesn't my Google Sheets word count custom function work?

我有以下功能

function wordCount(input) {
  const count = {};
  input
      .forEach(r => {
          const words = r.split(" ")
          
          words.forEach(w => {
              w = w.replace(/[^a-zöüßä ]/i,"")
              w = w[0].toUpperCase() + w.slice(1).toLocaleLowerCase();
              count[w] = (count[w] || 0) + 1
          })
      })

  const res = []

  for(const [word,frequency] of Object.entries(count)) {
      res.push([word,frequency])
  }

  return res;

}

我想将一列句子传递给函数,它应该 return 一行有两个单元格。

一个有独特的词,下一个有它在句子中的出现频率。

当我使用这个函数时,我发现 r.split 不是一个函数。谁能知道为什么?

如果这是一个 custom function,或者如果您通过读取电子表格范围并应用 .getValues() 获取值,input 将是一个二维数组,即使范围只是单列。

使用此模式:

          const words = r.map(sentence => sentence.split(" ")).flat();

要确保自定义函数在仅给定单个值时工作,请使用:

  if (!Array.isArray(input)) {
    input = [[input]];
  }

或者,使用带有 query()regexreplace()split() 的普通电子表格公式。您可以按字词分组并按计数聚合。

尝试:

=ARRAYFORMULA(QUERY(FLATTEN(PROPER(IFERROR(SPLIT(REGEXREPLACE(A1:A&"", 
 "(?i)[^a-z öüßä 0-9]", ), " ")))), 
 "select Col1,count(Col1) 
  where Col1 is not null 
  group by Col1 
  order by count(Col1) desc 
  label count(Col1)''"))