: O. Yuanying

RubyCocoa でアドレスブックをいじる

サーバに送られてくるスパムメールがだんだんうざくなってきたので、 一旦アドレスブックに登録されていないメールアドレスから送られてきたメールは一時置き場に隔離しようと思い、 RubyCocoa からアドレスブックをいじろう調べもの。

とりあえず以下のコードでアドレスブックに含まれているメールアドレスはすべて取得できるようだ。

require 'osx/cocoa'
OSX.require_framework 'AddressBook'

#http://developer.apple.com/mac/library/DOCUMENTATION/UserExperience/Reference/AddressBook/Miscellaneous/AddressBook_Constants/Reference/reference.html
book  = OSX::ABAddressBook.sharedAddressBook
me    = book.me

OSX::ABAddressBook.sharedAddressBook.people.each do |person|
  if person == me
    next
  end
  emails = person.valueForProperty(OSX::KABEmailProperty)
  if emails
    count = emails.count
    (0...count).each do |index|
      email = emails.valueAtIndex(index)
      puts email
    end
  end
end

pp book.public_methods とかやっても、cocoa のメソッドは見ることができないので、 ドキュメントを読まなくちゃいけないのがめんどくさい。