連絡帳データのCSV書き出しで、姓名の順を変えない方法

連絡帳データをvCARD形式で書き出し、フリーソフトを使ってCSVに変換し、同じくフリーの住所管理ソフトで取り込もうとした時、姓と名が入れ替わってしまいます

アップル連絡帳のオプションで姓名の表示順を変更したりしましたが、反映されませんでした

連絡帳をiクラウド経由でiphoneと同期させ、有料のAnyTransを使ってPCに取り込みましたが、やはりAnyTrans上では

姓名が入れ替わっています


どうすればよろしいのでしょうか?

iMac (21.5-inch, Late 2012), iOS 9.3.2

投稿日 2016/07/26 00:29

返信
返信: 21

2016/07/26 04:44 アイリッシュ への返信

失礼致します。 


もともと、First Nameの項目にLast Nameの情報を、Last Nameの項目にFirst Nameを入力していたのではないでしょうか? その場合、AppleScriptを使ってそれを入れ替えることが可能だと思います。 その後に、vCard形式に書き出してみるとどうでしょうか? 


例えば、Macの連絡先アプリを起動して、姓名が入れ替わった状態の人のカードを選択した上で、以下のAppleScriptを実行すると姓名を入れ替えることが可能ですよ(念のため、バックアップをとった上で実行してみてください)。


tell application "Contacts"

set personList to selection # 選択したカードのリストを作成

repeat with thePerson in personList # リストの項目毎に繰り返し

tell thePerson

set FN to its first name

set LN to its last name

set first name to LN

set last name to FN

end tell

end repeat


save # アドレス帳の変更を保存

end tell

2016/07/26 05:01 T22T への返信

AppleScriptについては全く知りませんでしたが、指摘されたとおりやってみると、見事に成功しました

しかし振りがなについては変更されていません

並べ替えなどに支障が出ないでしょうか


そもそも、First Nameの項目、LastNameがよく理解できていません

連絡帳のフォーマットでは姓の項目と名の項目として表示されていますので、

この表示のとおりに日本人の姓と名を入力していますが、これに工夫が必要なのでしょうか

他の住所録へのデータ移行などを考えなければ、実用上問題なく運用してきました

2016/07/26 05:35 アイリッシュ への返信

すみません、振りがなの変更を忘れていました。 それもAppleScriptで変更可能です。


(詳しくはスクリプトエディタ.appの辞書表示機能を使って、アドレス帳の辞書を表示してPersonのクラスにあるプロパティを参照します。) 


もしも、姓名を入れ替える前の状態にアドレス帳を戻すことができれば(Time Machineやバックアップを使って)、そうした上で、再度、以下のAppleScriptを実行してみてください。


tell application "Contacts"

set personList to selection# 選択したカードのリストを作成

repeat with thePerson in personList# リストの項目毎に繰り返し

tell thePerson

set FN to its first name

set LN to its last name

set PFN to its phonetic first name

set PLN to its phonetic last name


set first name to LN

set last name to FN

set phonetic first name to PLN

set phonetic last name to PFN

end tell

end repeat


save# アドレス帳の変更を保存

end tell

あるいは、もしも、振りがなの情報が入れ替わったカードだけを選択できるようでしたら、以下のAppleScriptを実行してみてください。


tell application "Contacts"

set personList to selection# 選択したカードのリストを作成

repeat with thePerson in personList# リストの項目毎に繰り返し

tell thePerson

set PFN to its phonetic first name

set PLN to its phonetic last name


set phonetic first name to PLN

set phonetic last name to PFN

end tell

end repeat


save# アドレス帳の変更を保存

end tell

2016/07/26 05:44 アイリッシュ への返信

度々、失礼致します。 

連絡帳のフォーマットでは姓の項目と名の項目として表示されていますので、

この表示のとおりに日本人の姓と名を入力していますが


これについては、連絡先アプリのバグの可能性もあるので、少し調べてみます。 後日、分かり次第、追記致します。

2016/07/26 05:49 T22T への返信

試験的に一件だけ実行した時点で、振りがなの件に気づき返信しました

その直後に同じデータを対象にスクリプトを実行しましたので、データは再び元に戻っています

従って新たに指導されたスクリプトを実行すると振りがなも含めて変換されるのだと思います

そこで、実際に実行するとすれば、複数のデータを選択しておけば一度のスクリプトの実行で、

対象の全データの変更は可能なのでしょうか

スクリプトの文面からは繰り返し実行されるように見受けられますが?


それと、直前の質問の後半部分ですが、連絡帳のオリジナルのフョーマットについて教えてください

FirstNameの項目とは日本人の名を入力する箇所で画面上でも薄く「名」と書かれている場所と理解しますが

それで間違いはないのでしょうか


この質問を書いている最中に、連絡帳のバグの可能性があるとのアドバイスをいただきました

宜しくお願いします

2016/07/26 06:10 アイリッシュ への返信

度々、失礼致します。 

アイリッシュ による書き込み:


試験的に一件だけ実行した時点で、振りがなの件に気づき返信しました

その直後に同じデータを対象にスクリプトを実行しましたので、データは再び元に戻っています

従って新たに指導されたスクリプトを実行すると振りがなも含めて変換されるのだと思います


その通りです。

実際に実行するとすれば、複数のデータを選択しておけば一度のスクリプトの実行で、

対象の全データの変更は可能なのでしょうか

スクリプトの文面からは繰り返し実行されるように見受けられますが?


その通りです。 複数のカードを選択しておけば、一度のスクリプトの実行で選択した全てのカードの情報を変更できます。 複数のカードを選択する際に、Shiftキーを押していれば、連続して並んでいるカードを選択できます。 また、commandキーを押した状態で選択すると、飛び飛びに並んでいるカードを選択できます。

それと、直前の質問の後半部分ですが、連絡帳のオリジナルのフョーマットについて教えてください

FirstNameの項目とは日本人の名を入力する箇所で画面上でも薄く「名」と書かれている場所と理解しますがそれで間違いはないのでしょうか


その通りです。 私は普段、Macの表示言語等を英語にしてるので気付くのが遅れてしまいました。 試験的に、日本語表示に切り替えて、姓の項目に『山本』、名の項目に『太郎』としたカードを作り、AppleScriptでそのカードのLast nameとFirst nameを調べてみましたが、それぞれ、正しく、『山本』と『太郎』となっていました。 もう少し調べてみます。

2016/07/29 04:26 アイリッシュ への返信

度々、失礼致します。


1)連絡先アプリに登録した名と姓が、それぞれ、First nameとLast nameの項目に入力されているかどうかを以下のAppleScriptで確認できます。 連絡先のカードを選択した状態で、かつ、スクリプトエディタ.appのログを表示(『表示』メニューから『ログを表示 ⌘3』)させてから、実行してみてください。


tell application "Contacts"

set personList to selection# 選択したカードのリストを作成

repeat with thePerson in personList# リストの項目毎に繰り返し

tell thePerson

log "名:" & (first name as text) & " 姓:" & (last name as text)

end tell

end repeat

end tell

2)連絡先アプリで意図せずに姓名の情報が入れ替わるトラブルは、以前のOS等で報告されていました。 原因は不明ですが、OSのアップグレードの過程で発生した不具合が連絡先情報に引き継がれているのかもしれないです。


2016/07/29 05:25 T22T への返信

T22T様

熱心な返事ありがとうございます

早速実行してみましたが、first nameで返ってくるのは「名」です

Last nameは「姓」が返っていますので、問題ないのかもしれません

ただ、結果表示が(名、姓)となっていましたが、スクリプトの構文

からすると、それで良いのでしょうね?

#マークも表示されていましたが?


思い出したのですが、何年か前に初めてマックを手にした時、WIN

からのデータ移行で姓名が逆転していていろいろ試行錯誤したことがありました

その際に連絡先アプリそのものに何か手を加えたのかもしれませんが、その時は

スノーレパードの時代でしたので、その後なんどもOSのクリーンインスツールを

やっています

「OSのアップグレードの過程で発生した不具合」とのコメントをヒントにして

上記のようなことを思い出しましたが、、、、、、、


何れにしても、マックとウィンの間でのデータ移行で私のように困っているような

ケースはレアなのでしょうかね

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

連絡帳データのCSV書き出しで、姓名の順を変えない方法

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。