You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:45:04