如何用Make.com在Google Sheets指定行查找课程标题并返回对应单元格?
解决方案:在Make.com中定位并更新Google Sheets的成对课程列
方法一:纯Make.com模块组合实现
步骤1:获取目标行完整数据
通过已有的「Search Rows」模块按邮箱定位目标行,确保模块返回该行所有列的数据(包含F到Z列的课程与日期字段)。
步骤2:提取并遍历成对字段
- 添加「Iterator」模块,将目标行的字段列表设为迭代源。
- 配置迭代逻辑:要么按每2个字段为一组遍历(对应F/G、H/I这类Lesson Name/Completed Date成对列),要么直接筛选出所有字段名包含
Lesson Name的项。
步骤3:匹配课程并定位日期列
在Iterator内部添加「Condition」模块,判断当前Lesson Name X字段的值是否等于目标课程标题(如Course Overview):
- 匹配成功时,记录对应的
Completed Date X字段名(比如匹配Lesson Name 2则对应Completed Date 2)。
步骤4:插入时间戳
添加「Update a Row」模块,定位到目标行,将记录的Completed Date X字段值设为Make内置时间戳{{now}}。
方法二:Google Apps Script + Make.com调用(更灵活)
步骤1:编写Sheets自定义脚本
打开目标Google Sheets,进入「扩展程序 > Apps Script」,新建脚本并粘贴以下代码:
function updateLessonCompletion(email, lessonName, timestamp) { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const data = sheet.getDataRange().getValues(); // 按邮箱查找目标行号(Sheets行号从1开始) let targetRow = -1; for (let i = 1; i < data.length; i++) { if (data[i].includes(email)) { targetRow = i + 1; break; } } if (targetRow === -1) return "未找到目标行"; // 遍历F到Z列(数组索引5到25),成对检查课程名 for (let col = 5; col <= 25; col += 2) { const lessonValue = sheet.getRange(targetRow, col).getValue(); if (lessonValue === lessonName) { // 写入时间戳到右侧日期列 sheet.getRange(targetRow, col + 1).setValue(new Date(timestamp)); return "更新成功"; } } return "未找到目标课程"; }
保存脚本并授权运行一次(完成权限验证)。
步骤2:在Make.com中调用脚本
添加「Google Sheets > Run a Function」模块,配置:
- 选择目标表格与脚本函数
updateLessonCompletion - 传入三个参数:
- 邮箱:从「Search Rows」模块获取的目标行邮箱值
- 课程名:指定的目标课程标题(如
Course Overview) - 时间戳:Make内置变量
{{now}}
内容的提问来源于stack exchange,提问作者Fablezim
相关产品推荐
相关产品推荐

