技能 编程开发 macOS备忘录自动化错误诊断手册

macOS备忘录自动化错误诊断手册

v20260423
apple-notes-common-errors
本指南全面收录了使用JXA或osascript自动化Mac系统备忘录时可能遇到的所有常见和复杂的错误代码。内容涵盖了三大问题领域:TCC权限拒绝、AppleEvent通信故障以及iCloud同步问题。提供了详细的错误参考表、根本原因分析和可测试的修复方案及诊断脚本,帮助用户解决自动化故障。
获取技能
161 次下载
概览

Apple Notes Common Errors

Overview

Apple Notes automation errors fall into three categories: TCC permission denials from macOS security, AppleEvent communication failures between your script and Notes.app, and iCloud sync issues that cause data inconsistency. Unlike REST APIs that return HTTP status codes, Apple Events use negative OSStatus codes. This guide covers every error you are likely to encounter when automating Notes via JXA or osascript, with tested fixes for each.

Error Reference

Error Code Root Cause Fix
Not authorized to send Apple events -1743 TCC denied automation permission System Settings > Privacy > Automation > enable your app
AppleEvent timed out -1712 Notes.app busy, hung, or not running Application("Notes").activate(); increase timeout with delay
Can't get application "Notes" -2700 Notes.app not installed or renamed Verify with mdfind "kMDItemCFBundleIdentifier == com.apple.Notes"
Can't get folder -1728 Folder name mismatch (case-sensitive) List folders first: Notes.defaultAccount.folders().map(f => f.name())
Connection is invalid -609 Notes.app crashed mid-operation killall Notes; sleep 2; open -a Notes; sleep 3
User canceled -128 Security dialog dismissed or timed out Re-run and click Allow; or pre-grant via MDM profile
Can't make Note -10000 Invalid HTML in note body Validate HTML; strip unsupported tags before creating
Application isn't running -600 App quit between calls Wrap in retry with Application("Notes").activate() first

Diagnostic Script

#!/bin/bash
echo "=== Apple Notes Diagnostics ==="
echo -n "macOS version: "; sw_vers -productVersion
echo -n "Notes.app running: "; pgrep -x Notes > /dev/null && echo "Yes" || echo "No"
echo -n "Notes.app path: "; mdfind "kMDItemCFBundleIdentifier == com.apple.Notes" 2>/dev/null | head -1
echo -n "Note count: "
osascript -l JavaScript -e 'Application("Notes").defaultAccount.notes.length' 2>/dev/null || echo "ERROR — check TCC"
echo -n "Folder count: "
osascript -l JavaScript -e 'Application("Notes").defaultAccount.folders.length' 2>/dev/null || echo "ERROR"
echo -n "Accounts: "
osascript -l JavaScript -e 'Application("Notes").accounts().map(a => a.name()).join(", ")' 2>/dev/null || echo "ERROR"
echo -n "iCloud status: "
defaults read MobileMeAccounts Accounts 2>/dev/null | grep -c AccountID || echo "No iCloud"
echo "=== TCC Automation Entries ==="
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db \
  "SELECT client, allowed FROM access WHERE service='kTCCServiceAppleEvents';" 2>/dev/null || echo "Cannot read TCC.db (SIP)"
echo "=== Done ==="

Common Fixes

# Reset TCC automation permissions (triggers fresh prompts)
tccutil reset AppleEvents

# Force quit and restart Notes with delay for launch
killall Notes 2>/dev/null; sleep 2; open -a Notes; sleep 3

# Verify Notes is responsive after restart
osascript -l JavaScript -e 'Application("Notes").defaultAccount.notes.length'

# Force iCloud sync restart
killall bird 2>/dev/null; killall cloudd 2>/dev/null; sleep 5

# Check for stuck iCloud sync
brctl status com.apple.Notes 2>/dev/null || echo "brctl not available"

Retry Wrapper for Transient Failures

// Retry pattern for -609, -600, -1712 errors
function withRetry(fn, maxAttempts = 3) {
  for (let i = 0; i < maxAttempts; i++) {
    try { return fn(); }
    catch (e) {
      if (i === maxAttempts - 1) throw e;
      Application("Notes").activate();
      delay(2);
    }
  }
}

// Usage
const count = withRetry(() => Application("Notes").defaultAccount.notes.length);

Error Handling

Issue Cause Solution
Errors persist after TCC reset App-specific permission cached Restart Terminal/IDE after tccutil reset
iCloud notes show stale data Sync daemon paused killall bird && killall cloudd to force resync
Sandbox prevents database read SIP protects TCC.db Use osascript to test access instead of direct DB query
Script works manually, fails from cron Cron has no TCC context Use launchd with AssociatedBundleIdentifiers instead

Resources

Next Steps

For incident response when errors cascade, see apple-notes-incident-runbook. For TCC and security hardening, see apple-notes-security-basics.

信息
Category 编程开发
Name apple-notes-common-errors
版本 v20260423
大小 4.98KB
更新时间 2026-04-26
语言