能否为Google Sheets脚本添加循环以批量搜索Google Calendar多组关键词
多关键词检索Google Calendar功能修改方案
完全可以通过添加循环逻辑实现指定区域多关键词逐个检索,修改后的代码会自动读取第一个工作表B列从第二行开始的所有非空关键词,逐个检索后把结果统一写入第二个工作表,不会互相覆盖。
调整后的完整代码
function export_gcal_to_gsheet(){ var sheet = SpreadsheetApp.getActiveSpreadsheet(); var sh0 = sheet.getSheets()[0]; // 第一个工作表存放配置信息 var sh1 = sheet.getSheets()[1]; // 第二个工作表存放检索结果 var mycal = sh0.getRange("B1").getValue(); var cal = CalendarApp.getCalendarById(mycal); // 检索的起止时间,可根据需求自行调整 var startTime = new Date("January 12, 1990 00:00:00 EST"); var endTime = new Date("May 18, 2050 23:59:59 EST"); // 读取B列从第2行开始的所有关键词,自动过滤空单元格 var searchKeywords = sh0.getRange("B2:B" + sh0.getLastRow()).getValues() .flat() .filter(keyword => keyword.trim() !== ""); var currentRow = 1; // 结果写入的起始行号,逐次累加避免覆盖 // 外层循环遍历所有关键词 for (var k = 0; k < searchKeywords.length; k++) { var currentKeyword = searchKeywords[k]; var events = cal.getEvents(startTime, endTime, { search: currentKeyword }); // 内层循环写入当前关键词的检索结果 for (var i = 0; i < events.length; i++) { var details = [[ mycal, events[i].getTitle(), events[i].getDescription(), events[i].getStartTime(), events[i].getLocation() ]]; sh1.getRange(currentRow, 1, 1, 5).setValues(details); currentRow++; } } }
使用说明
- 日历ID仍填写在第一个工作表的B1单元格
- 所有要检索的关键词依次填写在第一个工作表的B2、B3、B4……单元格,有多少填多少,空单元格会自动跳过
- 如果需要避免同一事件匹配多个关键词时重复写入,可以额外新增事件ID去重逻辑,写入前判断当前事件ID是否已经存在于结果表中即可
内容的提问来源于stack exchange,提问作者Joshua Roberts
相关产品推荐
相关产品推荐

