秀丸アドレス帳シンクロナイザのPeople APNo.02802
秀まるお2 さん 22/01/26 15:25
 
 秀丸アドレス帳シンクロナイザで、Google People APIに対応して、とりあえずβ
版で公開しました。

 Google連絡先をWeb上から取り込んで、それを秀丸メールの外部アドレス帳側に反
映する方だけ対応しています。逆方向はまだ何も手をつけてないです。

 タスクバー・トレーのアイコンのマウス右ボタンメニューから「外部アドレス帳用
ファイルの更新」を実行すると、うまく更新されるはずになります。

 秀丸メールのアドレス帳に「ファイル - 秀丸アドレス帳シンクロナイザで同期」
を実行すると、それは失敗します。

 よろしくお願いします。

 ついでに・・・、ふりがなは、姓と名両方取り込めるようにしました。あと、グ
ループ名は、以前とは違う名前で出てきてしまいます。並び順も変わってしまうと思
います。グループの並び順をソートするのも今のところうまく動きません。(ソート
されないで出てくる)

 ダウンロード用のページ:
https://hide.maruo.co.jp/software/tkcsync.html

[ ]
RE:02802 秀丸アドレス帳シンクロナイザのNo.02806
zurarin66 さん 22/01/28 15:39
 
早速の対応ありがとうございました。
確認させていただきます。

[ ]
RE:02806 秀丸アドレス帳シンクロナイザのNo.02807
zurarin66 さん 22/01/28 19:57
 
数回確認して、Googleアカウントから更新できました。
2022/01/28 19:42:59 Start Sync
2022/01/28 19:42:59 SetInfoWinMessage Google連絡先より最新情報を取得中...
2022/01/28 19:42:59 RefreshAddressFile RA(START)
2022/01/28 19:42:59 RA(OK Account)
2022/01/28 19:42:59 RA(OK Param)
2022/01/28 19:42:59 GetGroups Start

2022/01/28 19:42:59 GetGroups End
2022/01/28 19:42:59 RA(OK Group)
2022/01/28 19:42:59 GetContactAll Start
2022/01/28 19:43:00 RA(OK Contact)

2022/01/28 19:43:00 RA(OK CheckBuffer)
2022/01/28 19:43:00 SetInfoWinMessage 外部アドレス帳用のファイルを更新中...
2022/01/28 19:43:01 RA(OK SaveFile)
2022/01/28 19:43:01 SetInfoWinMessage Googleの連絡先情報を取得して、秀丸メー
ルの外部アドレス帳として保存しました。
2022/01/28 19:43:01 End Sync(Clear)

但し、数回エラーとなることもあったので、連絡しておきます。
成功時と同じ
2022/01/28 19:35:07 RA(OK Param)
2022/01/28 19:35:07 GetGroups Start
2022/01/28 19:35:07 GetGroups except:アクセスが拒否されました。

2022/01/28 19:35:07 SetInfoWinMessage Google連絡先のグループ情報が取得できま
せんでした。
2022/01/28 19:35:07 End Sync(Clear)


エラー発生時は、一旦発生すると繰り返しエラーとなったので、Google側の問題かも
しれません。

引き続きアップロード対応版できましたら、確認致します。

[ ]
RE:02807 秀丸アドレス帳シンクロナイザのNo.02808
秀まるお2 さん 22/01/29 17:32
 
 毎度テストありがとうございます。

 エラーケースについては、もうちょっと詳しい情報をtkcsync.errファイルに出力
するようにしておくべきでした。その辺も直してみます。

 秀丸メールの外部アドレス帳への変更をGoogle連絡先に同期させる処理はまだ調査
というか、元々の処理(そもそも自分が作ったんじゃない)がどうなってるか調べて
る段階でして、もうしばらく時間かかりそうです。

[ ]
RE:02808 秀丸アドレス帳シンクロナイザのNo.02809
秀まるお2 さん 22/02/04 18:37
 
 現状報告だけさせていただきますと・・・・

 秀丸メール側で外部アドレス帳を書き換えることについて、とりあえず、グループ
名とメンバーの名前やメールアドレスの書き換えなどについて、とりあえず簡単に動
く所までなんとか行きました。まだ細かいテストはしてませんが。

 あとは・・・グループ追加、グループ削除、メンバー追加、メンバー削除、メン
バーのグループ間移動、などがまだです。

 たぶんあと1週間〜2週間くらいかかりそうな状況です。

[ ]
RE:02809 秀丸アドレス帳シンクロナイザのNo.02810
zurarin66 さん 22/02/07 00:08
 
状況のご連絡ありがとうございました。
大幅な変更で、お手数おかけします。

引き続きご対応よろしくお願いいたします。

[ ]
RE:02810 秀丸アドレス帳シンクロナイザのNo.02811
秀まるお2 さん 22/02/16 15:25
 
 今ですが、Version 2.00β2ってことで、一応すべての機能をPeople API対応して
アップロードしました。

https://hide.maruo.co.jp/software/bin3/tkgc200b2_signed.exe

 すみませんがこれをインストールしてテストなどお願いします。

 インストールしたら、まず1回「外部アドレス帳用ファイルの更新」を実行しても
らわないとダメです。前回のβ版で生成したファイルとはちょっと形式が違ってます。
「セルフリンクURL」っていうのを埋め込むんですが、その形式が変わってます。

 それと、名前とふりがなと住所の仕様が変更になってます。

 名前については、「姓」と「名」の両方を取得して、それを空白で区切って表示す
るようにしました。なので、例えば僕の名前だと、以前は

    斉藤秀夫

 と表示されてたのが、

    斉藤 秀夫

 みたいに間に空白が1つ入るようになります。また、名前を書き換える時は、空白
を除去せずに書き換えてもらわないといけないです。空白を除去して

    斉藤秀夫

 に書き換えて同期させてしまうと、Google連絡先の方での「姓」は空になり、
「名」の方が「斉藤秀夫」になってしまいます。

 ふりがなも同様です。

 住所については、「住所」と「番地」の2つがあって、秀丸メール上ではこの2つ
をコンマ区切りで表示します。秀丸メール側で書き換えると、その内容の中からコン
マを探して、その前後を「住所」と「番地」扱いでGoogle連絡先にセットします。コ
ンマが無ければ「住所」のみセットされて「番地」は空になります。

 ややこしいですがこういう仕様にしないと仕方が無いかと思いまして、そうしまし
た。

 しいて、Google連絡先から秀丸メールへの一方通行ならこんなへんな仕様にしなく
てもいい所ではありますけども。

 あと、エラーが起きた場合、tkcsync.errファイルにもっと詳しい内容が出るはず
になります。それを教えていただければだいたい原因が特定できると思います。さら
には「Googleとのやりとり記録も出力する」のオプションをONにすると、

 tkcsync_http.log

 ってファイルも生成されて、そこにGoogleとのやりとり内容(https://...でアク
セスした内容すべて)が出る手はずになります。ただしこれは基本僕のデバッグ用で
あって、普通のユーザーさんには不要です。

 よろしくお願いします。

 僕の方でのテストは続行します。

[ ]
RE:02811 秀丸アドレス帳シンクロナイザのNo.02812
秀まるお2 さん 22/02/16 15:29
 
 追加ですみません。

 実はテストしてて秀丸メールのアドレス帳側のバグも1つ見つけてました。アドレ
ス帳のメンバーをソートした後に秀丸アドレス帳シンクロナイザと同期させるとソー
ト方法がおかしくなったり、中に登録したメンバーの情報書き換えが失敗したりしま
す。

 そのバグ修正したのを昨日V7.11β2としてアップロードしています。

 すみませんがそれの入れ替えもお願いします。

32bit版:
https://hide.maruo.co.jp/software/bin3/hmmail711b2_signed.exe

64bit版:
https://hide.maruo.co.jp/software/bin3/hmmail711b2_x64_signed.exe

[ ]
RE:02812 秀丸アドレス帳シンクロナイザのNo.02813
zurarin66 さん 22/02/18 01:14
 
ご対応ありがとうございます。

> Version 2.00β2ってことで、一応すべての機能をPeople API対応してアップロー
>ドしました。
> そのバグ修正したのを昨日V7.11β2としてアップロードしています。
>64bit版:

別環境ですが、早速試したところ、「外部アドレス帳用ファイルの更新」を実行でエ
ラーが発生しています。
Microsoft .NET Framework の "オブジェクト参照がオブジェクト インスタンスに設
定されていません" とエラーダイアログが出ます。
その後、続行しても、同期処理中のまま終了しません。
同期もされていないようで、秀丸メール起動中/終了でも変わらないようです。

---- tkcsync.err ----
2022/02/18 01:04:37 秀丸アドレス帳シンクロナイザ開始
2022/02/18 01:04:37 GetGoogleAccount
2022/02/18 01:04:37 GetGoogleAccount will CheckCreateObject
2022/02/18 01:04:37 CheckCreateObject start
2022/02/18 01:04:37 CheckCreateObject: will ConvPassword decode
2022/02/18 01:04:37 CheckCreateObject: will ConvPassword decode 2
2022/02/18 01:04:37 CheckCreateObject will OAuth2Parameters
2022/02/18 01:04:38 CheckCreateObject will RequestSettings
2022/02/18 01:04:38 CheckCreateObject done RequestSettings
2022/02/18 01:04:38 CheckCreateObject will ContactsRequest
2022/02/18 01:04:38 CheckCreateObject done ContactsRequest
2022/02/18 01:04:38 CheckCreateObject OK
2022/02/18 01:04:38 GetGoogleAccount CheckCreateObject OK account=xxxxxx@gma
il.com
2022/02/18 01:04:38 MainWin_Activated
2022/02/18 01:04:47 Start Sync
2022/02/18 01:04:47 SetInfoWinMessage Google連絡先より最新情報を取得中...
2022/02/18 01:04:47 アドレス帳更新 RA(START)
2022/02/18 01:04:47 RA(OK Account)
2022/02/18 01:04:47 RA(OK Param)
2022/02/18 01:04:47 InitObjectSub start
2022/02/18 01:04:47 InitObjectSub: will ConvPassword decode
2022/02/18 01:04:47 InitObjectSub: will SetRegValue
2022/02/18 01:04:47 InitObjectSub: new RequestSettings
2022/02/18 01:04:47 InitObjectSub: new ContactsRequest
2022/02/18 01:04:47 InitObjectSub return True
2022/02/18 01:04:48 GetGroups Start
2022/02/18 01:04:48 GetGroups End
2022/02/18 01:04:48 RA(OK Group)
2022/02/18 01:04:48 GetContactAll Start
2022/02/18 01:04:48 RA(OK Contact)
---------------------------------------------

---- tkcsync_http.log ----
2022/02/18 01:04:47 =======アドレス帳更新
2022/02/18 01:04:48 GET https://people.googleapis.com/v1/contactGroups?pageSize=1000
2022/02/18 01:04:48 Response:{
  "contactGroups": [
    {
      "resourceName": "contactGroups/chatBuddies",
      "groupType": "SYSTEM_CONTACT_GROUP",
      "name": "chatBuddies",
      "formattedName": "チャットの連絡先"
    },
    {
      "resourceName": "contactGroups/all",
      "groupType": "SYSTEM_CONTACT_GROUP",
      "name": "all",
      "formattedName": "すべての連絡先"
    },
    {
      "resourceName": "contactGroups/myContacts",
      "groupType": "SYSTEM_CONTACT_GROUP",
      "name": "myContacts",
      "formattedName": "Myコンタクト"
    },
    {
      "resourceName": "contactGroups/friends",
      "groupType": "SYSTEM_CONTACT_GROUP",
      "name": "friends",
      "formattedName": "友だち"
    },
    {
      "resourceName": "contactGroups/family",
      "groupType": "SYSTEM_CONTACT_GROUP",
      "name": "family",
      "formattedName": "家族"
    },
    {
      "resourceName": "contactGroups/coworkers",
      "groupType": "SYSTEM_CONTACT_GROUP",
      "name": "coworkers",
      "formattedName": "同僚"
    },
    {
      "resourceName": "contactGroups/blocked",
      "groupType": "SYSTEM_CONTACT_GROUP",
      "name": "blocked",
      "formattedName": "ブロック中"
    },
    {
      "resourceName": "contactGroups/starred",
      "groupType": "SYSTEM_CONTACT_GROUP",
      "name": "starred",
      "formattedName": "スター付き"
    }
  ],
  "totalItems": 8,
  "nextSyncToken": "ENyEkN-Oh_YC"
}

2022/02/18 01:04:48 GET https://people.googleapis.com/v1/people/me/connections?sortOrder=FIRST_NAME_ASCENDING&personFields=emailAddresses,names,memberships,phoneNumbers,addresses,metadata&pageSize=1000
2022/02/18 01:04:48 Response:{}
---------------------------------------------
.NETのエラーログも残しています。

お手数ですが、ご確認お願いします。

---以下の内容はコミュニテックス会議室システムにより付加されました。
本文中のメールアドレスは伏せ字に変換されました。伏せ字にしたくない場合
はメールアドレスを""で囲んで書き込んでください。

[ ]
RE:02813 秀丸アドレス帳シンクロナイザのNo.02814
秀まるお2 さん 22/02/18 09:00
 
 テストありがとうございます。&、相変わらずエラーでお手数かけてすみません。

 .NET Frameworkでエラー(例外)が出た場合、一応、try〜catchっていうのでちゃ
んと囲んであれば、その例外がキャッチされてちゃんとエラーログが出つつ、シンク
ロナイザがエラーメッセージを表示して動作を続行しないといけないです。今回のエ
ラーはそのtry〜catchで囲んでない所で例外が出たってことだと思います。

> .NETのエラーログも残しています。

 そのエラーログの中に具体的なエラー発生箇所(ソースコードのファイル名+行番
号)が出てると思います。すみませんがそれ教えて欲しいです。

 例えば僕の所で意図してエラーを発生させた時のログはこんな風になります。

System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに
設定されていません。
   場所 tkcsync.basMainCode.RefreshAddressFile(Int32 Handle, Boolean bookNot
e3Template, String& EMes, Boolean RefFlg) 場所 D:\DataFolder\Project\VB2008\
tkcsync\basMainCode.vb:行 1405
   場所 tkcsync.MainWin.PM_MakeAddressFile_Click(Object sender, EventArgs e)
 場所 D:\DataFolder\Project\VB2008\tkcsync\fmrMainWin.vb:行 818
   場所 System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   ...
   ...

-----------------------------------------
 それと、次のβ版では「System Group: 友だち」は出さないようにしようと思いま
す。このグループにメンバーが登録されてることもあるようですが、登録されてるメ
ンバーがある場合は、それは「Myコンタクト」の方に出てくるようにしようと思いま
す。

 「友だち」のグループはブラウザで上では出てこなくなってるようだし、ここにメ
ンバーを移動しようとしてもGoogleさんからエラーが返ってしまうようなので。

[ ]
RE:02814 秀丸アドレス帳シンクロナイザのNo.02815
秀まるお2 さん 22/02/18 18:24
 
 まだ動作確認した訳じゃないですが、たぶん、アドレス帳メンバーが一人もいない
場合にエラーが起きるんだと思います。

 そういうことでテストして修正をトライしてみます。

[ ]
RE:02815 秀丸アドレス帳シンクロナイザのNo.02816
秀まるお2 さん 22/02/18 18:32
 
 今再現できました。修正してまた来週中にβ版アップロードさせていただきます。

[ ]
RE:02816 秀丸アドレス帳シンクロナイザのNo.02817
zurarin66 さん 22/02/19 01:48
 
再現ありがとうございました。

> アドレス帳メンバーが一人もいない場合
確かにエラーが出ているアカウントは、
"連絡先" には登録が0で、よく使う連絡先には数名登録されています。

また、エラー発生時の.NETのログ貼付いたします。

************** 例外テキスト **************
System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに
設定されていません。
   場所 tkcsync.basMainCode.RefreshAddressFile(Int32 Handle, Boolean bookNot
e3Template, String& EMes, Boolean RefFlg)
   場所 tkcsync.MainWin.PM_MakeAddressFile_Click(Object sender, EventArgs e)
   場所 System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   場所 System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
   場所 System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
   場所 System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
   場所 System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
   場所 System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
   場所 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons butt
on, Int32 clicks)
   場所 System.Windows.Forms.Control.WndProc(Message& m)
   場所 System.Windows.Forms.ToolStrip.WndProc(Message& m)
   場所 System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, I
ntPtr wparam, IntPtr lparam)
-----------------------------------


また。別のPC(登録多数のアカウント)では問題なく動作しておりました。

ご確認お願いいたします。

[ ]
RE:02817 秀丸アドレス帳シンクロナイザのNo.02818
秀まるお2 さん 22/02/21 09:10
 
> "連絡先" には登録が0で、よく使う連絡先には数名登録されています。

 「よく使う連絡先」にだけメンバー登録したケースについてもテストしてみます。
現状だとそれは取得できてない可能性が高いかと思います。

> また、エラー発生時の.NETのログ貼付いたします。

 手元のバージョンだとソースコードの名前や行番号まで出るんですが、これはデバ
ッグ環境だから出ていたようでした。普通だとそこまで出ないようで・・・。

 どっちにしても再現できたのでもう大丈夫だと思います。

 なんとか今日中にまたβ版アップロードさせていただきます。

[ ]
RE:02818 秀丸アドレス帳シンクロナイザのNo.02819
秀まるお2 さん 22/02/21 09:29
 
 「よく使う連絡先」についてちょっと調べてみたんですが、これは「その他の連絡
先」の中から使用頻度の高い物が自動でリストアップされる物のようで、現状のPeop
le APIでは取得するAPIが無さそうでした。

 「その他の連絡先」は、送信した宛先が(すべて、または最近の分だけ?)自動で
リストアップされる物のようですが、これについては別途取得するAPIがありつつも、
とりあえずは秀丸アドレス帳シンクロナイザで扱う物ではなさそうなので、対応しな
いでおきます。しいて対応するとしたら、秀丸メール側での宛先のオートコンプリー
ト候補のリストアップには使えるかと思いますけども、それはまた別に大変な話にな
ってしまいます。

 ということで早めに次のβ版アップロードします。

[ ]
RE:02819 秀丸アドレス帳シンクロナイザのNo.02820
秀まるお2 さん 22/02/21 11:09
 
 今アップロードしました。

    https://hide.maruo.co.jp/software/bin3/tkgc200b3_signed.exe

 ちなみに現在のGoogle連絡先は、どこのグループにも属さないメンバーの登録って
のは出来ないようです。秀丸メールの次のβ版では、Google連絡先のルートにはメン
バー登録や移動/コピーは出来ないようにします。

 よろしくお願いします。

[ ]
RE:02820 秀丸アドレス帳シンクロナイザのNo.02821
zurarin66 さん 22/02/21 14:21
 
対応ありがとうございます。
複数アドレス登録されたアカウントでは、正常に動作しています。
登録アドレス空のアカウントでも後で確認してみます。

新しいGoogle連絡先同期で相談があります。

Google Contactの敬称(前/後)(Name Prefix/Name Suffix)を
秀丸メールアドレス帳の名前前後につけることできないでしょうか?
例えば、使い方としては、Google Contactで
 Family Name   :岩鬼
 Given Name    :正美
 Name Suffix   :殿
 Name Prefix   :明訓高校
としていて、秀丸メールアドレス帳の名前を
 "明訓高校 岩鬼 正美 殿"
とできればと思いまして。

Google連絡先:名前 = Google Contact:Name
となっていたので、Google ContactのNameを変えていたのですが、同期先が代わった
ので。
そもそもGoogle ContactのName変更が、CSVによるimportでしか変更できず、シンク
ロナイザでの同期が厄介そうですが、後敬称(Name Suffix)だけでもできればと。

もし、別案で良いアイデアあれば教えていただければ。

以上、よろしくお願いいたします。

[ ]
RE:02821 秀丸アドレス帳シンクロナイザのNo.02822
秀まるお2 さん 22/02/21 15:00
 
 PrefixやSuffixってのがあるのは知りませんでした。今Webブラウザで試してみた
ら、「編集」を押してメンバーの情報を編集する場面で、さらに「もっと見る」って
所をクリックしたら、

 敬称(名前の前)
 姓
 名
 ミドルネーム
 敬称(名前の後)

 が出てくることだけ確認できました。

 People APIからの返ってくる情報は、

          "displayName": "斉藤秀夫殿ミスター",
          "familyName": "斉藤",
          "givenName": "秀夫",
          "honorificPrefix": "ミスター",
          "honorificSuffix": "殿",
          "displayNameLastFirst": "斉藤秀夫殿ミスター",
          "unstructuredName": "斉藤秀夫殿ミスター"

 みたいに、なぜか「名前の前」が一番最後に来てしまうようです。Webブラウザ上
での表示もそうなります。

 ちなみにシンクロナイザのV2.00β1の時は、"displayName"をそのまま名前として
出してましたが、それだと秀丸メールで編集したのをGoogle側に同期することが出来
なくなってしまうので、現在はfamilyNameとgivenNameを空白区切りで出すようにし
ています。

 もし「秀丸メール側で編集したのをGoogle側に反映する」ってことを禁止して一方
通行にしてもいいのなら、displayNameをそのまま表示するようにしてもいいです。
それ以外は秀丸メール側のアドレス帳の仕組み的に「名前」だけしか用意してない関
係で無理がありそうな気がします。

 他にも何か具体的にこうしてほしい的な案があれば検討してもいいです。


[ ]
RE:02822 秀丸アドレス帳シンクロナイザのNo.02823
zurarin66 さん 22/02/25 16:21
 
返信遅くなってすいません。
別PCでも"tkgc200b3_signed.exe"確認して、登録アドレス空のアカウントでも問題あ
りませんでした。

Google Contact の PrefixやSuffix 不思議な動作しますね。
"displayName"が、webから編集できないのも。

色々考えたのですが、現状の "familyName"、"givenName"が同期としては、スムーズ
なようです。
現状仕様で問題ないです。

ご対応ありがとうございます。

[ ]
RE:02823 秀丸アドレス帳シンクロナイザのNo.02824
秀まるお2 さん 22/02/25 17:18
 
 毎度確認ありがとうございます。

> 色々考えたのですが、現状の "familyName"、"givenName"が同期としては、スムー
>ズなようです。
> 現状仕様で問題ないです。

 秀丸メールのアドレス帳の仕組み的に現状そうするしか無いかと思います。

 とりあえずこのまま正式版にする予定とさせていただきます。

[ ]