首页 > 解决方案 > 如何使用应用程序脚本来计算单元格数量并根据它更改其他列中的上下文?

问题描述

目前,我的谷歌表格中有三列,第 1 列是公司名称,第 2 列是行业名称,第 3 列是营业额(但数据重复)。我想计算相同的公司名称并根据该数字使用应用程序脚本划分营业额。

这是我想要的示例和结果。

这是我的原始电子表格。 https://docs.google.com/spreadsheets/d/1CPMXkOKzOjGEwcR7OdK7SCEO2Nri_DlN_GBoMLSwtTA/edit?usp=sharing

当我尝试使用此脚本时,出现显示“未定义值”的错误。这是代码

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


请查看下面的代码片段,它应该会有所帮助。我刚刚创建了一个公司在电子表格中出现多少次的哈希值,然后使用这个哈希值更新了初始数据。

const data = [
  {company: "A", turnover: 10000},
  {company: "A", turnover: 10000},
  {company: "A", turnover: 10000},
  {company: "A", turnover: 10000},
  {company: "B", turnover: 20000},
  {company: "B", turnover: 20000},
]

const hash = {}

for (let d of data) {
  if (d.company in hash) hash[d.company] += 1
  else hash[d.company] = 1
}

const updatedData = data.map(d => ({...d, turnover: d.turnover/hash[d.company] }))

console.log(updatedData)

你也可以使用Map,这是我的建议!

const data = [
  {company: "A", turnover: 10000},
  {company: "A", turnover: 10000},
  {company: "A", turnover: 10000},
  {company: "A", turnover: 10000},
  {company: "B", turnover: 20000},
  {company: "B", turnover: 20000},
]

const hash = new Map();

for (let d of data) {
  const currentVal = hash.get(d.company);
  if (currentVal) hash.set(d.company, currentVal + 1)
  else hash.set(d.company, 1)
}

const updatedData = data.map(d => ({ ...d,
  turnover: d.turnover / hash.get(d.company)
}))

console.log(updatedData)


推荐阅读