Google Sheet日历日期预订状态判断公式及网站展示组件咨询
Google Sheet 公式实现方案
核心逻辑公式
假设你的表格布局:
- 日历日期列:
CALENDAR_DATE(示例为A2:A区域) - 活动数据集:
STATUS(E2:E)、EVENT_START_DATE(F2:F)、EVENT_END_DATE(G2:G)
Booked列判断公式
在Booked列的第一个数据单元格(比如B2)输入以下公式,下拉填充至所有日历行:
=SUMPRODUCT(--(E$2:E$100="Booked"),--(A2>=F$2:F$100),--(A2<=G$2:G$100))>0
说明:
- 遍历所有标记为"Booked"的活动,检查当前日历日期是否落在活动的起止区间内
--将布尔判断结果转为数值,SUMPRODUCT累加符合条件的记录数,只要结果>0就返回TRUE(表示该日期被预订)
Available列判断公式
直接基于Booked列的结果反向输出:
=NOT(B2)
或者独立编写:
=SUMPRODUCT(--(E$2:E$100="Booked"),--(A2>=F$2:F$100),--(A2<=G$2:G$100))=0
自动填充优化版(无需下拉)
如果日历日期会动态新增,用ARRAYFORMULA实现自动计算:
Booked列(B2单元格):
=ARRAYFORMULA(IF(A2:A="",,SUMPRODUCT(--(E$2:E="Booked"),--(A2:A>=F$2:F),--(A2:A<=G$2:F))>0))
Available列(C2单元格):
=ARRAYFORMULA(IF(A2:A="",,NOT(B2:B)))
网站日历可用性展示方案
以下是几种实用的实现方式:
- Google Apps Script + 自定义HTML组件:编写脚本读取Sheet数据,生成包含可用性标记的HTML日历,直接嵌入网站。借助
SpreadsheetAppAPI获取预订数据,用原生HTML/CSS或轻量日历逻辑渲染视图。 - Sheet发布 + 前端日历组件:将Sheet的可用性数据发布为公开可访问的CSV/JSON,用前端日历组件读取并渲染预订状态。需确保Sheet设置为「任何人可查看」权限。
- WordPress专属插件:若使用WordPress建站,可选用支持Google Sheets关联的日历插件,直接同步数据并展示可用/不可用日期。
- 低代码平台组件:Webflow、Bubble等平台的第三方日历组件支持直接连接Google Sheets数据源,通过可视化配置即可完成可用性展示。
内容的提问来源于stack exchange,提问作者Louis Gaulin
相关产品推荐
相关产品推荐

