谷歌表格观影清单:随机抽取未勾选已看电影的函数/脚本求助
谷歌表格随机抽取未观看影片解决方案
方法一:公式实现(无需脚本)
在I5单元格中输入以下公式即可自动抽取未勾选“已看”的影片:
=IFERROR(INDEX(FILTER(B:B, H:H=FALSE), RANDBETWEEN(1, COUNTA(FILTER(B:B, H:H=FALSE)))), "没有未观看影片")
- 逻辑说明:
FILTER(B:B, H:H=FALSE):筛选出H列(已看复选框)未勾选的所有影片名称(B列)COUNTA(...):统计筛选后剩余的未观看影片数量RANDBETWEEN(1, ...):生成1到未观看影片总数之间的随机整数INDEX(...):根据随机数选取对应位置的影片IFERROR(...):当没有未观看影片时,显示提示文本避免报错
方法二:Apps脚本实现(支持按钮触发)
如果需要手动触发抽取操作,可以用脚本实现:
- 打开你的谷歌表格,点击顶部菜单栏「扩展」→「Apps脚本」
- 清空默认代码,粘贴以下脚本:
function randomUnwatchedMovie() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 获取B列到H列的所有数据(从第2行开始跳过表头) const dataRange = sheet.getRange(2, 2, sheet.getLastRow() - 1, 7); const data = dataRange.getValues(); // 过滤掉已勾选“已看”的影片(H列对应数组索引6) const unwatchedMovies = data.filter(row => !row[6]); if (unwatchedMovies.length === 0) { sheet.getRange("I5").setValue("没有未观看影片"); return; } // 随机选取一部未观看影片 const randomIdx = Math.floor(Math.random() * unwatchedMovies.length); // 将结果写入I5单元格 sheet.getRange("I5").setValue(unwatchedMovies[randomIdx][0]); }
- 点击脚本编辑器顶部的「保存」按钮,命名项目(比如“随机选电影”)
- 点击「运行」按钮,首次运行需要授权脚本访问你的表格数据
- 返回表格,点击「插入」→「绘图」,绘制一个按钮(比如“抽电影”),右键按钮选择「分配脚本」,输入
randomUnwatchedMovie后确定,之后点击按钮即可触发抽取
内容的提问来源于stack exchange,提问作者Sav
相关产品推荐
相关产品推荐

