Apple Script获取Mac通讯录联系人生日报错的解决方法
解决AppleScript获取通讯录生日的类型错误
你的脚本出错是因为birthday属性返回的是包含日期信息的对象,而非直接可转换为字符串的日期值,强制转换会触发类型不匹配错误。以下是修正后的解决方案:
基础修正版本
tell application "Contacts" set firstContact to first person set contactName to name of firstContact -- 通过date属性提取实际生日日期 set contactBirthday to date of birthday of firstContact end tell -- 用系统短日期格式格式化显示 set formattedBirthday to short date string of contactBirthday display dialog "Name: " & contactName & return & "Birthday: " & formattedBirthday
带容错处理的版本(兼容无生日的联系人)
tell application "Contacts" set firstContact to first person set contactName to name of firstContact -- 先检查联系人是否设置了生日 if birthday of firstContact exists then set contactBirthday to date of birthday of firstContact set formattedBirthday to short date string of contactBirthday else set formattedBirthday to "未设置生日" end if end tell display dialog "Name: " & contactName & return & "Birthday: " & formattedBirthday
关键说明
birthday of person返回的是生日对象,必须通过date of birthday提取其中的日期数据。- 使用
short date string可根据系统区域设置自动格式化日期,避免直接转字符串时的类型冲突。
内容的提问来源于stack exchange,提问作者Ionică Bizău
相关产品推荐
相关产品推荐

