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

如何从Google Sheets创建日历事件并将EventID写回表格

解决Google Sheets生成日历事件后写入EventID的问题

问题说明

现有代码可通过Google Sheets数据创建Google Calendar全天事件,但无法将生成的EventID写回表格的EventID列,需要修改代码实现该功能。

修改后的完整代码

function createCalendarEvent() {
    // 获取当前活动表格
    var spreadsheet = SpreadsheetApp.getActiveSheet();
    var calendarId = spreadsheet.getRange("F1").getValue();
    var eventCal = CalendarApp.getCalendarById(calendarId);

    // 获取A4到F100的数据范围
    var marketingEntries = spreadsheet.getRange("A4:F100").getValues();

    // 遍历每一行数据
    for (let x = 0; x < marketingEntries.length; x++) {
        var markEntry = marketingEntries[x];
        // 跳过空行或已存在EventID的行,避免重复创建事件
        if (!markEntry[0] || markEntry[5]) continue;

        var title = markEntry[0];
        var date = markEntry[1];
        var descrip = markEntry[2];
        var gues = markEntry[3];

        // 创建全天事件并获取事件对象
        var newEvent = eventCal.createAllDayEvent(title, new Date(date), {
            description: descrip,
            guests: gues
        });
        // 获取事件ID并写入对应行的EventID列(F列,第6列)
        spreadsheet.getRange(x + 4, 6).setValue(newEvent.getId());
    }
}

关键修改点说明

  • 避免重复创建事件:添加判断逻辑if (!markEntry[0] || markEntry[5]) continue;,空行(标题为空)或已存在EventID的行直接跳过,防止重复生成事件。
  • 获取EventID:createAllDayEvent方法返回创建完成的Event对象,调用其getId()方法即可获取该事件的唯一ID。
  • 写入对应列:通过getRange(x + 4, 6)定位到当前数据行的EventID列(F列),其中x + 4对应表格的实际行号(数据从第4行开始),6代表第6列(F列),最后用setValue()将ID写入单元格。

内容的提问来源于stack exchange,提问作者Stephen Bornheimer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:23:17