通过与对方助理协调、在双方日程中查找空闲时段并发送日历邀请,为你的老板安排与另一人的会议。
满足调度器 技能是一项面向实际任务的技能,主要用于任何可遵循编号步骤的模型;对于时区推理或复杂的限制, 请使用介质模型;
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
任何能够遵循编号步骤的模型均可。如需处理时区推理或复杂约束条件,请使用中等规模模型。
执行操作前,请确认以下信息:
若请求模糊(例如“安排一次与 Jane 的通话”)→ 请先提出一个澄清问题,再继续后续操作。
检查 data/pa-directory.json 文件:
python3 -c "
import json, sys
try:
with open('data/pa-directory.json') as f:
d = json.load(f)
except FileNotFoundError:
print('ERROR: data/pa-directory.json not found')
sys.exit(1)
name = 'PERSON_NAME' # 替换为实际姓名
matches = [p for p in d.get('pas', []) if name.lower() in p['owner'].lower()]
if not matches:
print('No PA found for:', name)
else:
for p in matches:
print('PA:', p['name'], '| Phone:', p['phone'])
"
若未找到对应 PA → 跳至第 4 步,直接通过电子邮件联系该人员。
#!/bin/bash
# 获取当前时间和 7 天后的时间
TODAY=$(date -u +%Y-%m-%dT%H:%M:%SZ)
NEXT_WEEK=$(date -u -d '+7 days' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null
|| date -u -v+7d +%Y-%m-%dT%H:%M:%SZ)
# 获取日程事件并输出排序后的列表
GOG_ACCOUNT=owner@company.com gog calendar events primary
--from "$TODAY"
--to "$NEXT_WEEK"
2>/dev/null
| python3 -c "
import sys, json
try:
events = json.load(sys.stdin)
except json.JSONDecodeError:
events = []
# 按开始时间排序并逐条打印
print('Upcoming events:')
for e in sorted(events, key=lambda x: x.get('start', {}).get('dateTime', '')):
start = e.get('start', {}).get('dateTime', '')[:16].replace('T', ' ')
print(' ', start, '—', e.get('summary', 'Untitled'))
"
提供 3–5 个具体可选时间段:
"Hey [PA Name], [your owner] would like to meet [their owner] for [duration]. Slots that work: • [Day Date] at [HH:MM TZ] • [Day Date] at [HH:MM TZ] • [Day Date] at [HH:MM TZ] Do any work? Or what times work best?"
若在工作日 2 小时内未收到回复 → 进行一次跟进。 若 4 小时后仍无回复 → 告知您的主管,并建议其直接联系对方。
双方就时间达成一致后:
# 基础日历事件 GOG_ACCOUNT=owner@company.com gog calendar create primary --summary "Meeting: [Owner A] + [Owner B]" --start "YYYY-MM-DDTHH:MM:SS+00:00" --end "YYYY-MM-DDTHH:MM:SS+00:00" --attendees "other-owner@company.com" --description "Scheduled via PA coordination"
如为视频会议,请添加会议链接:
--description "Video call: https://meet.google.com/xxx-xxxx-xxx"
发送给您所属主管: "✅ Done — [Date] at [Time] with [Person]. Calendar invite sent." 发送给对方 PA: "✅ Invite sent to [Their Owner] for [Date] [Time]. Let me know if anything changes."
#!/usr/bin/env python3
"""Find open meeting slots in the owner's calendar."""
import subprocess, json, sys
from datetime import datetime, timedelta, timezone
OWNER_EMAIL = "owner@company.com" # replace
DURATION_MIN = 30
DAYS_AHEAD = 7
WORK_START_HOUR = 9
WORK_END_HOUR = 18
# Fetch calendar events
try:
result = subprocess.run(
['gog', 'calendar', 'events', 'primary',
'--from', datetime.now(timezone.utc).isoformat(),
'--to', (datetime.now(timezone.utc) + timedelta(days=DAYS_AHEAD)).isoformat()],
env={'GOG_ACCOUNT': OWNER_EMAIL, 'PATH': '/usr/bin:/usr/local/bin:/bin'},
capture_output=True, text=True, timeout=30
)
events = json.loads(result.stdout) if result.stdout.strip() else []
except (subprocess.TimeoutExpired, json.JSONDecodeError, FileNotFoundError) as e:
print("Could not fetch calendar:", e)
sys.exit(1)
# Build list of busy (start, end) pairs
busy = []
for e in events:
start = e.get('start', {}).get('dateTime')
end = e.get('end', {}).get('dateTime')
if start and end:
busy.append((start, end))
# Find free slots during working hours
suggestions = []
for day_offset in range(1, DAYS_AHEAD + 1):
day = datetime.now(timezone.utc) + timedelta(days=day_offset)
# Skip weekends
if day.weekday() >= 5:
continue
# Check each hour
for hour in range(WORK_START_HOUR, WORK_END_HOUR):
slot_start = day.replace(hour=hour, minute=0, second=0, microsecond=0)
slot_end = slot_start + timedelta(minutes=DURATION_MIN)
# Skip if slot goes past end of day
if slot_end.hour > WORK_END_HOUR:
continue
# Check for conflicts
conflict = any(
slot_start.isoformat() < b[1] and slot_end.isoformat() > b[0]
for b in busy
)
if not conflict:
suggestions.append(slot_start)
if len(suggestions) >= 5:
break
if len(suggestions) >= 5:
break
if not suggestions:
print("No slots found in the next 7 days during working hours.")
else:
print(f"Available {DURATION_MIN}-min slots:")
for s in suggestions:
print(" •", s.strftime('%A %b %d'), "at", s.strftime('%H:%M'), "UTC")
# 1. 查找原事件 GOG_ACCOUNT=owner@company.com gog calendar events primary --from "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --to "$(date -u -d '+14 days' +%Y-%m-%dT%H:%M:%SZ)" # 2. 删除旧事件(使用上一步输出中的 EVENT_ID) GOG_ACCOUNT=owner@company.com gog calendar delete primary EVENT_ID # 3. 与对方 PA 重新协调,并创建新事件
每次重新安排会议时,务必通知双方:
"[Owner] needs to move the [Date] meeting. Can we try [new time]?"
| 场景 | 模板 |
|---|---|
| 初始请求 | "Hey [PA], [Owner A] wants to connect with [Owner B] for ~30 min [this/next] week. What works?" |
| 提议时间段 | "Here are 3 options: [A], [B], [C]. Any work?" |
| 确认预订 | "✅ Booked for [time]. Invite sent to [email]." |
| 重新安排 | "[Owner] can't make [time]. Can we try [alternative]?" |
| 取消会议 | "[Owner] needs to cancel [time]. Apologies." |
| 未找到对应 PA | "Hi [Owner], [Your Owner] would like to schedule a call. Are you available [options]?" |
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.3万人学习
共49课时 | 82.7万人学习
最新文章