如何在Google Sheets中追踪推荐链并统计相关数据
解决Google表格推荐链分析方案
一、统计每位用户的推荐人数
直接推荐人数(仅统计一级被推荐人)
假设推荐人手机号列是D列,用户手机号列是B列,在空白列(如E列)的E2单元格输入以下公式,下拉填充即可:
=COUNTIF($D:$D, B2)
总推荐人数(含所有间接被推荐人)
如果需要统计包含多级推荐的总人数,需使用自定义脚本:
- 打开表格的「扩展程序」→「Apps脚本」,粘贴以下代码并保存:
function TOTALREFERRALS(phone) { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var data = sheet.getDataRange().getValues(); var count = 0; for(var i=1; i<data.length; i++){ if(data[i][3] == phone){ count += 1 + TOTALREFERRALS(data[i][1]); } } return count; }
- 在空白单元格输入
=TOTALREFERRALS(B2),下拉填充即可得到对应用户的总推荐人数。
二、找出最长推荐链的用户及所有被推荐人
步骤1:计算每个用户的最长链长
- 在Apps脚本中添加以下代码:
function CHAINLENGTH(phone) { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var data = sheet.getDataRange().getValues(); var maxLength = 0; for(var i=1; i<data.length; i++){ if(data[i][3] == phone){ var currentLength = 1 + CHAINLENGTH(data[i][1]); if(currentLength > maxLength){ maxLength = currentLength; } } } return maxLength; }
- 在空白列(如F列)输入
=CHAINLENGTH(B2),下拉填充得到每个用户的最长推荐链长度。
步骤2:提取最长链的所有成员
- 在Apps脚本中添加以下代码:
function GETLONGESTCHAIN(phone) { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var data = sheet.getDataRange().getValues(); var longestChain = []; var maxLength = 0; for(var i=1; i<data.length; i++){ if(data[i][3] == phone){ var subChain = GETLONGESTCHAIN(data[i][1]); var currentLength = subChain.length + 1; if(currentLength > maxLength){ maxLength = currentLength; longestChain = [data[i][0] + "(" + data[i][1] + ")"]; longestChain = longestChain.concat(subChain); } } } return longestChain; }
- 先用
=MAX(F:F)得到表格中的最大链长,找到链长等于该值的用户,在对应单元格输入=GETLONGESTCHAIN(B2),即可获取该用户最长推荐链的所有成员列表。
注意事项
- 首次运行自定义脚本时,需要完成Google权限授权,按照提示操作即可。
- 若表格数据量较大,可优化脚本中数据读取逻辑(一次性读取所有数据到内存),提升运行效率。
内容的提问来源于stack exchange,提问作者Sandeep Kumar
相关产品推荐
相关产品推荐

