AppleScript错误代码-1721含义及批量发短信脚本故障排查
AppleScript批量发iMessage报错"error "" number -1721"排查与解决
错误-1721本质是应用响应超时,结合你的场景,主要从以下几个方向排查解决:
常见原因及对应解决方法
1. CSV读取逻辑异常,导致后续调用出错
- 核对列名匹配度:脚本中引用的列名必须和CSV里的
Phone Number、Message完全一致,注意大小写、空格,不能写成phone number或PhoneNumber这类变体。 - 验证CSV数据格式:确保电话号码是iMessage支持的格式(比如带国家码
+8613xxxxxxxxx),无空行、多余逗号;消息内容避免未转义的引号等特殊字符,防止脚本解析失败。 - 加调试代码确认读取结果:在脚本里添加日志输出,检查读取到的每一行数据是否正确:
set csvFile to choose file with prompt "选择CSV文件" of type {"public.comma-separated-values-text"} set csvContent to read csvFile as «class utf8» set allLines to paragraphs of csvContent repeat with aLine in allLines if aLine is not equal to "" then log aLine -- 在脚本编辑器日志面板查看读取内容 end if end repeat
2. iMessage应用响应异常
- 强制重启Messages:彻底退出后台的Messages应用,重新打开后再运行脚本,后台挂起的应用可能出现响应卡顿。
- 修正Messages调用语法:使用标准的iMessage调用格式,明确指定服务类型和目标联系人,避免简化写法导致的识别错误:
tell application "Messages" set targetService to 1st service whose service type is iMessage set targetBuddy to buddy "+8613xxxxxxxxx" of targetService send "测试消息" to targetBuddy end tell
3. 系统权限限制
- 检查自动化权限:打开「系统设置」→「隐私与安全性」→「自动化」,确保「脚本编辑器」有权限控制「Messages」应用。
- 验证号码可发送性:手动在Messages里给CSV中的号码发一条测试消息,确认该号码能被识别为iMessage联系人,避免脚本调用时因号码无效触发超时。
4. 批量发送过载
- 添加发送延迟:批量发送时,Messages短时间内处理过多请求会超时,在每条消息发送后增加1-2秒延迟:
delay 1 -- 每条消息发送后等待1秒
内容的提问来源于stack exchange,提问作者user29548469
相关产品推荐
相关产品推荐

